ユーザーがフォームに入力した値をFlaskで取り出す方法がわからないという質問でしょうか?
それとも WTForm をつかってURLをバリデーションしたいというこでしょうか?
まず前者のフォームの内容を読む方法ですが、GETであれば request.args[フォーム名]
、POST であれば request.form[フォーム名]
で取り出せます。
python
1from flask import request
2
3
4@app.route('/sendurl', methods=['GET', 'POST'])
5def send_url():
6 print('GETリクエストの url の内容は {} だよ'.format(request.args.get('url', 'なし')))
7 print('POSTリクエストの url の内容は {} だよ'.format(request.form.get('url', 'なし')))
8 return 'hello'
9
つぎに後者の WTForm を活用してURLをベリファイしたいというのであれば、たとえばこんな感じになります。(Flask-WTFプラグインを使っています)
python
1"""view file."""
2from flask import Flask
3from flask import render_template
4from flask_wtf import FlaskForm
5from wtforms import StringField
6from wtforms.validators import Length, Required, URL
7
8app = Flask(__name__)
9app.secret_key = 'foobarfoobarfoobarfoobarfoobar'
10
11class UrlForm(FlaskForm):
12 url = StringField(
13 label='URL',
14 validators=[
15 Required('URLを入力してください'),
16 Length(min=1, max=1024, message='URLは1024文字以内で入力してください'),
17 URL(message='URLが正しくありません'),
18 ])
19
20
21@app.route('/sendurl', methods=['GET', 'POST'])
22def send_url():
23 form = UrlForm()
24 if form.validate_on_submit():
25 url = form.url.data
26 print('送られたURLは {} だよ'.format(url))
27 return 'URL is {}'.format(url)
28 else:
29 return render_template('send_url.html', form=form)
30
html
1<!-- template -->
2<html><body>
3 <form action="{{ url_for('send_url') }}" method="post">
4 {{ form.csrf_token }}
5 {{ form.url.label }}
6 {{ form.url }}
7 {% for error in form.url.errors %}
8 <p role="alert">Error: {{ error }}</p>
9 {% endfor %}
10 <button type="submit">送信</button>
11 </form>
12</body></html>
13
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/28 22:14
2017/03/01 05:17
2017/03/01 05:39
2017/03/01 06:41
2017/03/01 06:44
2017/03/01 08:29