一 flask介紹 三

13 About Responses

view function會自動轉換返回對象類型爲response
1 如果返回值爲string,那麼返回值作爲參數創建一個response
2 如果返回值爲tuple,例如 (response, status, headers) or (response, headers)

make_response()會創建一個response

14 Sessions

除了request可以store information,其包括由一個請求到下一個。另外一個是object session。
app.secret_key = b'_5#y2L"F4Q8z\n\xec][/'

@app.route('/')
def index():
if 'username' in session:
return 'logined in as %s' % escape(session['username'])
return 'you are not logged in'

@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
session['username'] = request.form['username']
return redirect(url_for('index'))
else:
return '''
<form method="post">
<p><input type=text name=username>
<p><input type=submit value=Login>
</form>
'''
@app.route('/logout')
def logout():
if session['username']: #direct run session exception,KeyError: 'username'
#if not exist,return None,which not need if aboved
session.pop('username',None)
return redirect(url_for('index'))

概念:
序列是Python的基本數據結構,每個元素指定一個數字,或者說index,從0開始。
可以對序列index, 切片,加,乘,迭代 for x in (1,2,3),檢查成員3 in (1,2,3)。
常見的序列有list,tuple。 list實現了stack,queue操作。tuple沒有stack操作。
dictionary實現了stack操作。

note:
sessions保存的信息,在server重啓後,browser連接server,sessions的信息還是存在的。

15 Message Flashing

通過flash函數,user在view中flash message
通過 get_flashed_messages()函數,user在template中獲取messages。
這樣用戶就能獲取更多的信息feedback。

flash('logined successfully!')

{% with messages = get_flashed_messages() %}
{% if messages %}
<li>{{messages}}</li>
{% endif%}
{% endwith%}

輸出:
['logined successfully!']

案例
return render_template('index.html',user=escape(session['username']))
return render_template('index.html',user='')
報錯:
return render_template('index.html',user='')
^ SyntaxError: invalid syntax
原因:
return render_template('index.html',user=escape(session['username'])) 少一個括號
分析方法:
找一個對的,粘貼到txt中對比分析。

16 Logging

使用logger來記錄

例如:
app.logger.debug('A value for debugging')
app.logger.warning('A warning occurred (%d apples)', 42)
app.logger.error('An error occurred')

17 Hooking in WSGI Middlewares

18 Using Flask Extensions

例如:
Flask-SQLAlchemy

19 Deploying to a Web Server

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章