【发布时间】:2020-03-26 00:39:11
【问题描述】:
晚上好。我试图阻止用户使用 reCaptcha v3 进入我的网站。但是,执行此操作的模板没有加载,尽管被调用:
from flask import url_for, render_template, redirect, request, render_template_string
from flask import current_app as app
from .forms import *
from .filewriter import *
from .mailserver import *
from .rcvalidator import *
from flask_jsglue import JSGlue
jsglue = JSGlue(app)
@app.route('/', methods=('GET', 'POST'))
def home():
reqform = ReqForm()
delform = DelForm()
error = 0
if request.method == "POST":
gtoken = request.json['gtoken']
if not rc_form_valid(gtoken):
print("working")
return redirect(url_for('inv')) #would prefer to have the loaded thing here but as a test tried to lad a different function
return render_template('home.html',
reqform=reqform,
delform=delform,
csrf_token=0,
errors=error)
@app.route('/req', methods=('GET', 'POST'))
def req():
reqform = ReqForm()
delform = DelForm()
if reqform.validate_on_submit():
appendfile("req.csv", reqform)
mail(reqform.name.data, reqform.tel.data, "recipient")
return redirect(url_for('success'))
elif request.method == "POST" and not reqform.validate():
error = 1
else:
error = 0
return render_template('home.html',
reqform=reqform,
delform=delform,
csrf_token=reqform.csrf_token,
errors = error)
@app.route('/delv', methods=('GET', 'POST'))
def delv():
reqform = ReqForm()
delform = DelForm()
if delform.validate_on_submit():
appendfile("del.csv", delform)
mail(delform.name.data, delform.tel.data, "delivery")
return redirect(url_for('success'))
elif request.method == "POST" and not delform.validate():
error = 2
else:
error = 0
return render_template('home.html',
reqform=reqform,
delform=delform,
csrf_token=delform.csrf_token,
errors = error)
@app.route('/success')
def success():
return render_template('success.html')
@app.route('/invalid', methods=(['GET']))
def inv():
print("loaded inv")
return "get out now"
@app.route('/cancel', methods=('GET', 'POST'))
def cancel():
canform = CanForm()
if canform.validate_on_submit():
# TODO: delete stuff from form
return redirect(url_for('success'))
elif request.method == "POST" and not delform.validate():
error = 1
else:
error = 0
return render_template('cancel.html',
canform=canform,
csrf_token=canform.csrf_token,
errors=error)
“working”和“loaded inv”打印,但是新模板没有渲染,我不明白为什么。当我提交表单时,success.html 会呈现。请帮忙
【问题讨论】:
-
你重定向到'inv'并且路由是'/invalid'而不是'inv',错字吗?
-
@SlawomirDziuba 不,url_for 查找函数附带的 url(在本例中为 inv)
标签: python html python-3.x flask