私はPythonといくつかのPython Webフレームワークを学びたいと思っています。現在、私はFlaskコースに従っていますが、解決策が見つからないhtmlフォームで問題が発生しました。Python FlaskのHTMLフォームが表示されない - POSTメソッドの代わりにGET?
以下のコードは、ユーザーがHTMLフォームを使用してログインでき、ログインが成功すると/ mainにリダイレクトされる非常に単純なページを '/'に作成することになっています。
しかし、htmlフォームを表示する代わりに、ページは直ちに/ mainにリダイレクトされます。問題の
少なくとも一部は、私はflash(request.method)
を追加するとき、GET
が返されるので、request.method
は、GET
、というよりもPOST
を返していることのようです。
コードを複数回チェックしましたが、これは私が次のチュートリアルとまったく同じですが、結果は同じではありません。
私はPython 3.5を使用しています。私はFlaskバージョン0.10.1と考えています。
これは私のメインのPythonのファイルです:
from flask import Flask, render_template, request, session, \
flash, redirect, url_for, g
import sqlite3
# configuration
DATABASE = 'blog.db'
USERNAME = 'admin'
PASSWORD = 'admin'
SECRET_KEY = 'hard_to_guess'
app = Flask(__name__)
# pulls in app configuration by looking for UPPERCASE variables
app.config.from_object(__name__)
# function used for connecting to the database
def connect_db():
return sqlite3.connect(app.config['DATABASE'])
@app.route('/', methods=['GET', 'POST'])
def login():
error = None
if request.method == 'POST':
if request.form['username'] != app.config['USERNAME'] or\
request.form['password'] != app.config['PASSWORD']:
error = 'Invalid credentials. Please try again.'
else:
session['logged_in'] = True
return redirect(url_for('main'))
return render_template('login.html', error=error)
@app.route('/main')
def main():
return render_template('main.html')
@app.route('/logout')
def logout():
session.pop('logged_in', None)
flash('You were logged out')
return redirect(url_for('login'))
if __name__ == '__main__':
app.run(debug=True)
そして、ここlogin.html
コードです:
{% extends "template.html" %}
{% block content %}
<h2>Welcome to the Flask Blog!</h2>
<h3>Please login to access your blog.</h3>
<form action="" method="post">
Username: <input type="text" name="username" value="{{ request.form.username }}">
Password: <input type="password" name="password" value="{{ request.form.password }}">
<p><input type="submit" value="Login"></p>
</form>
{% endblock %}
すべてのヘルプや提案が非常に高く評価されるだろう。
ありがとう、これは問題でした。私は数時間それを探していたが、もしそうであれば、他の人と仲直りしていた。 – James