1.我的學習總結css
Python 是一個高層次的結合瞭解釋性、編譯性、互動性和麪向對象的腳本語言。Python 的設計具備很強的可讀性,相比其餘語言常用英文關鍵字,其餘語言的一些標點符號,它具備比其餘語言更有特點語法結構。在一學期時間內學習並實現基於Python的Flask框架web建設項目,下面簡單分享一下我我的學習python語言後的一些心得和經驗。html
剛開始接觸python的時候,這個語言給個人第一感受就是簡潔,過去咱們接觸的比較多的編程語言是Java,Java是一門面向對象編程語言,不只吸取了C++語言的各類優勢,還摒棄了C++裏難以理解的多繼承、指針等概念,所以Java語言具備功能強大和簡單易用兩個特徵。Java語言做爲靜態面向對象編程語言的表明,極好地實現了面向對象理論,容許程序員以優雅的思惟方式進行復雜的編程。固然過去個人java並無學得很好 ,也只是略懂 皮毛 ,一個是由於專業要求不高 ,另外一個學習這個語言仍是有必定難度,但自從接觸python,我發現好像發掘了本身對編程的興趣,固然這歸功於python易上手程度,python是如今主流的編程語言之一 ,他能夠 用來幹不少事情,這個學期咱們暫時只學習網頁製做,但這已經不能知足我對這個語言的好奇心,已經火燒眉毛想學好它,應用到 更多地方。在這裏我想分享一下過去python和 java的不一樣點。java
這學期,咱們學習在老師的帶領下,咱們學習了Python+Flask+MysqL的web建設,一開始以爲 這個頗有趣,由於一直來都是瀏覽 別人的網頁,如今終於有機會去製做 本身的網頁了,一開始接觸html和css,感受仍是有點繁瑣,但慢慢的習慣了,並且還以爲頗有趣。python
我知道我如今學習的東西只是皮毛中的皮毛,往後確定會遇到 不少困難,可是編程的路上 原本 就會遇到各類問題,可是克服這些困難的過程無疑也會給我帶來更多的成長。最後也但願本身能一直堅持下去,在 學習python的路上越走越遠。mysql
主要工具備:pycharm64.exe + Python 3.6 64-bit + MySQL + Navicat for MySQL(輔助工具)程序員
Flaskweb
Flask的hello 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 %}
運用工具:MySQL + Navicat for MySQL(輔助工具)
1.安裝與配置python3.6+flask+mysql數據庫
1.下載安裝MySQL數據庫
2.下載安裝MySQL-python 中間件(pip install flask-sqlalchemy (Python的ORM框架SQLAlchemy))
2.mysql建立數據庫
3.數據庫配置信息config.py
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:@localhost:3306/zhuce?charset=utf8'
SQLALCHEMY_TRACK_MODIFICATIONS = False
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)
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'用戶不存在,請先註冊'