1. 程式人生 > 實用技巧 >Flask Turtoial(WTF表單)

Flask Turtoial(WTF表單)

  1. 如何建立登陸功能
  • 匯入flask_wtf模組

  • 在form.py中建立LoginForm表單類和相關欄位

  • 建立login.html頁面引用 LoginForm例項form的相關欄位 比如form.username

  • 建立/login路由,return render_template(記得要渲染form和Title='Sign In')

@app.route('/login', methods=['GET', 'POST'])
def login():
    form = LoginForm()
    if form.validate_on_submit():
        flash('Login requested for use {}, remember_me={}'.format(
            form.username.data, form.remember_me.data))
        return redirect('/index')
    return render_template('login.html', title='Sign In', form=form)

HTTP 路由預設是什麼? 如何覆蓋?

在Web瀏覽器中 GET請求會將什麼新增到URL中? POST通常什麼時候使用? 區別是什麼? Method Not Allowed通常是什麼原因?

前端的頁面怎麼寫?

在前端的導航欄下,使用jinja2 with語句 將方法get_flashed_messages()的值附給messages

如果報錯,python已經在使用中,檢視python程序,殺死

ps -fA | grep python

給表單新增錯誤提示

    <!- 使用者錯誤-->
    {% for error in form.username.errors %}
    <span style="color: red;">[{{ error }}</span>
    {% endfor %}
</p>
<p>
    <!- 密碼錯誤-->
    {{ form.password.label }}<br>
    {{ form.password(size=32) }}
    {% for error in form.password.errors %}
    <span style="color: red">[{{ error }}</span>
    {% endfor %}

span會換行嗎? br是什麼? 為什麼要迴圈明明只有一個錯誤,卻要用列表?

生成URL

    <div>
        Microblog:
        <a href="/index">Home</a>
        <a href="/login">Login</a>
    </div>


@app.route('/login', methods=['GET', 'POST'])
def login():
    form = LoginForm()
    if form.validate_on_submit():
        # ...
        return redirect('/index')

直接在模板和檔案中編寫url有什麼壞處?用什麼函式可以解決?怎麼使用?

app/templates/base.html: 
    <div>
        Microblog:
        <a href="{{ url_for('index') }}">Home</a>
        <a href="{{ url_for('login') }}">Login</a>
    </div>
@app.route('/login', methods=['GET', 'POST'])
def login():
    form = LoginForm()
    if form.validate_on_submit():
        flash('Login requested for use {}, remember_me={}'.format(
            form.username.data, form.remember_me.data))
        return redirect(url_for('index'))
    return render_template('login.html', title='Sign In', form=form)