Я использовал флягу раньше, и у меня была проверка формы работы, но по какой-то причине она не работала для моего нового приложения. Вот основной код видапроверка флагов-wtf не работает?
from flask.ext.wtf import Form, TextField, TextAreaField, SubmitField, validators,ValidationError
class subReddit(Form):
subreddit = TextField('subreddit', [validators.Required('enter valid subreddit')])
next = SubmitField('next')
change = SubmitField('change')
user = TextField('user', [validators.Required('enter valid user')])
fetch = SubmitField('fetch comments')
Я subreddit в области проверки, так что если его пуст, я хочу, чтобы бросить ошибку и перезагрузите страницу.
Вот HTML
<form class='sub' action="{{ url_for('sr') }}" method='post'>
{{ form.hidden_tag() }}
<p>
if you want to enter more than one subreddit, use the + symbol, like this:
funny+pics+cringepics
<p>
<br/>
{% for error in form.subreddit.errors %}
<p>{{error}}</p>
{% endfor %}
{{form.subreddit.label}}
{{form.subreddit}}
{{form.change}}
</form>
Я CSRF_ENABLED = True в моем routes.py, а также. Что мне не хватает? Когда я оставляю subredditfield пустым и меняет клик, он просто перезагружает страницу, никаких ошибок. Это проблема, потому что все, что находится в поле, будет записано в моей базе данных, и оно не может быть пустым.
EDIT
@app.route('/index',methods=['GET','POST'])
@app.route('/',methods=['GET','POST'])
def index():
form = subReddit()
rand = random.randint(0,99)
sr = g.db.execute('select sr from subreddit')
srr = sr.fetchone()[0]
r = requests.get('http://www.reddit.com/r/{subreddit}.json?limit=100'.format(subreddit=srr))
j = json.loads(r.content)
pic = j['data']['children'][rand]['data']['url']
title = None
if form.validate_on_submit():
g.db.execute("UPDATE subreddit SET sr=(?)", [form.subreddit.data])
print 'validate '
if j['data']['children'][rand]['data']['url']:
print 'pic real'
sr = g.db.execute('select sr from subreddit')
srr = sr.fetchone()[0]
r = requests.get('http://www.reddit.com/r/{subreddit}.json?limit=100'.format(subreddit=srr))
pic = j['data']['children'][rand]['data']['url']
title = str(j['data']['children'][rand]['data']['title']).decode('utf-8')
return render_template('index.html',form=form,srr=srr,pic=pic,title=title)
else:
print 'not valid pic'
return render_template('index.html',form=form,srr=srr,pic=pic)
else:
print 'not valid submit'
return render_template('index.html',form=form,srr=srr,pic=pic)
return render_template('index.html',form=form,srr=srr,pic=pic)
Можете ли вы показать код с точки зрения, которая на самом деле использует форму? –
Я добавлю то, что у меня есть в редактировании, но я возился с ним много, потому что ничего не работает.Когда я ввожу недопустимый субредд, вместо того, чтобы перезагружать страницу или что-то еще, она просто выдает ошибку в переменной pic, потому что она не может получить json из недопустимого sub – gallly