期末做業

1.我的學習總結css

 

 

Python 是一個高層次的結合瞭解釋性、編譯性、互動性和麪向對象的腳本語言。Python 的設計具備很強的可讀性,相比其餘語言常用英文關鍵字,其餘語言的一些標點符號,它具備比其餘語言更有特點語法結構。在一學期時間內學習並實現基於PythonFlask框架web建設項目下面簡單分享一下我我的學習python語言後的一些心得和經驗。html

剛開始接觸python的時候,這個語言給個人第一感受就是簡潔,過去咱們接觸的比較多的編程語言是JavaJava是一門面向對象編程語言,不只吸取了C++語言的各類優勢,還摒棄了C++裏難以理解的多繼承指針等概念,所以Java語言具備功能強大和簡單易用兩個特徵。Java語言做爲靜態面向對象編程語言的表明,極好地實現了面向對象理論,容許程序員以優雅的思惟方式進行復雜的編程固然過去個人java並無學得很好 ,也只是略懂 皮毛 ,一個是由於專業要求不高 ,另外一個學習這個語言仍是有必定難度,但自從接觸python,我發現好像發掘了本身對編程的興趣,固然這歸功於python易上手程度,python是如今主流的編程語言之一 ,他能夠 用來幹不少事情,這個學期咱們暫時只學習網頁製做,但這已經不能知足我對這個語言的好奇心,已經火燒眉毛想學好它,應用到 更多地方。在這裏我想分享一下過去pythonjava的不一樣點。java

 

  1. PythonJava簡單,學習成本低,開發效率高
    2.Java是一種靜態類型語言,Python是一種動態類型語言
    3.Java中的全部變量須要先聲明(類型)才能使用,Python中的變量不須要聲明類型
    4.Java編譯之後才能運行,Python直接就能夠運行;
    5.JAVA 裏的塊用大括號對包括,Python 以冒號 + 四個空格縮進表示。
    6.JAVA 的類型要聲明,Python 的類型不須要。
    7.JAVA 每行語句以分號結束,Python 能夠不寫分號。
    8.實現同一功能時,JAVA 要敲的鍵盤次數通常要比 Python 多。

 

     這學期,咱們學習在老師的帶領下,咱們學習了Python+Flask+MysqLweb建設一開始以爲 這個頗有趣,由於一直來都是瀏覽 別人的網頁,如今終於有機會去製做 本身的網頁了,一開始接觸htmlcss,感受仍是有點繁瑣,但慢慢的習慣了,並且還以爲頗有趣。python

我知道我如今學習的東西只是皮毛中的皮毛,往後確定會遇到 不少困難,可是編程的路上 原本 就會遇到各類問題,可是克服這些困難的過程無疑也會給我帶來更多的成長。最後也但願本身能一直堅持下去,在 學習python的路上越走越遠。mysql

 

 

2. Python+Flask+MysqLweb建設

 1、使用工具

主要工具備:pycharm64.exe + Python 3.6 64-bit + MySQL + Navicat for MySQL(輔助工具)程序員

2、完成基本的頁面設計

3、涉及到的第三方庫和Flask & 概覽

Flaskweb

Flaskhello world應用很是的簡單,僅僅單個Python文件的7行代碼就夠了。sql

# from http://flask.pocoo.org/ tutorial數據庫

from flask import Flask編程

app = Flask(__name__)

@app.route("/") # take note of this decorator syntax, it's a common pattern

def hello():

    return "Hello World!"

if __name__ == "__main__":

app.run()

 

四、加載靜態文件,父模板與其餘界面的繼承

1.登錄用url_for加載靜態文件

  1.<script src="{{ url_for('static',filename='js/login.js') }}"></script>

  2.flask static文件夾開始尋找

  3.可用於加載css, js, image文件

2.繼承和擴展

  1.把一些公共的代碼放在父模板中,避免每一個模板寫一樣的內容。base.html

  2.子模板繼承父模板

      1.{% extends 'base.html’ %}

3.父模板提早定義好子模板能夠實現一些本身需求的位置及名稱。block

  1.<title>{% block title %}{% endblock %}-MIS問答平臺</title>

  2.{% block head %}{% endblock %}

  3.{% block main %}{% endblock %}

4.子模板中寫代碼實現本身的需求。block

    1.{% block title %}登陸{% endblock %}

 

5、數據庫鏈接池

運用工具:MySQL + Navicat for MySQL(輔助工具)

1.安裝與配置python3.6+flask+mysql數據庫

  1.下載安裝MySQL數據庫

  2.下載安裝MySQL-python 中間件(pip install flask-sqlalchemy PythonORM框架SQLAlchemy))

2.mysql建立數據庫

3.數據庫配置信息config.py

SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:@localhost:3306/zhuce?charset=utf8'

SQLALCHEMY_TRACK_MODIFICATIONS = False

 

6經過用戶模型,對數據庫進行增刪改查

from flask import Flaskfrom flask_sqlalchemy import SQLAlchemyimport config

 

app = Flask(__name__)

app.config.from_object(config)

 

db=SQLAlchemy(app)

class User(db.Model):

    __tablename__ = 'User'

    id = db.Column(db.Integer,primary_key=True,autoincrement=True)

    username = db.Column(db.String(20),nullable=False)

    password = db.Column(db.String(20),nullable=False)

    nickname = db.Column(db.String(20))#db.create_all()

#

user=User(username='liu1234',password='123456789')

db.session.add(user)

db.session.commit()#

user=User.query.filter(User.username=='two1234').first() user.password='12345678910'

db.session.delete(user)

db.session.commit()#

user=User.query.filter(User.username=='two1234').first()

user.username='three1234'

db.session.add(user)

db.session.commit()#

user=User.query.filter(User.username=='two1234').first()print(user.id,user.username,user.password)

 

@app.route('/')def hello_world():

    return 'Hello World!'

 

if __name__ == '__main__':

    app.run()

 

 

七、完成註冊功能

@app.route('/sign_up/',methods=['GET','POST'])def sign_up():

    if request.method == 'GET':

        return render_template('zhuce.html')

    else:

        username = request.form.get('username')

        password = request.form.get('password')

        user = User.query.filter(User.username == username).first()

        if user:

            return 'username existed.'

        else:

            user1 = User(username=username, password=password)

            db.session.add(user1)

            db.session.commit()

            return redirect(url_for('sign_in'))

 

八、完成登錄功能

# 跳轉登錄。

@app.route('/denglu/', methods=['GET', 'POST'])  

def denglu():

    if request.method == 'GET':

        return render_template('denglu.html')

    else:

        username = request.form.get('user')  

        password = request.form.get('pass')

        user = User.query.filter(User.username == username).first()  

        if user:

            if user.check_password(password):

                session['user'] = username  

                session.permanent = True  

                return redirect(url_for('daohang'))

            else:

                return u'用戶密碼錯誤'

        else:

            return u'用戶不存在,請先註冊'

 

    

 

九、登陸後更新導航

 

 

十、實現導航條中的搜索功能

# 跳轉首頁搜索

@app.route('/search/')

def search():

    sousuo = request.args.get('sousuo')  

    fabus = Fabu.query.filter(

        or_(                               

            Fabu.title.contains(sousuo),  

            Fabu.detail.contains(sousuo)

        )

    ).order_by('-creat_time')

    return render_template('daohang.html', fabus=fabus)  

11密碼保護

from werkzeug.security import generate_password_hash,check_password_hash

 

_password = db.Column(db.String(200), nullable=False)   

 

    @property  

def password(self):         

 return self._password

 

    @password.setter

    def password(self,row_password):   

        self._password = generate_password_hash(row_password)

 

    def check_password(self,row_password):   generate_password_hash

        result = check_password_hash(self._password,row_password)

        return result

 

# 跳轉登錄。

@app.route('/denglu/', methods=['GET', 'POST'])  

def denglu():

    if request.method == 'GET':

        return render_template('denglu.html')

    else:

        username = request.form.get('user')  

        password = request.form.get('pass')

        user = User.query.filter(User.username == username).first()

        if user:

            if user.check_password(password):

                session['user'] = username  

                session.permanent = True

                return redirect(url_for('daohang'))

            else:

                return u'用戶密碼錯誤'

        else:

            return u'用戶不存在,請先註冊'

12、模型分離

相關文章
相關標籤/搜索