flask jinja2.exceptions.undefinederror:“form”未定义*

xu3bshqb  于 2021-09-29  发布在  Java
关注(0)|答案(1)|浏览(332)

dhi的伙计们,我有 flask 问题,控制台给我错误,例如我不知道如何解决这个问题,我的html说我的表单未定义我想检查输入数据的验证,如果数据已通过验证成功输入,请转到将数据发送到我的数据库
file.py

@app.route('/reg.html',methods=['POST'])
def Register():
    form=RegisterForm()        
    if form.validate_on_submit():
      if request.method=='POST':         
       Email=request.form['email']
   username=request.form['username']
   password=request.form['password']

   cur=mysql.connection.cursor()
   cur.execute('''INSERT INTO dane (Email,username,UserPassword) VALUES (%s , %s , %s)''',(Email , username , password))
   mysql.connection.commit() 
   cur.close()
   return redirect(url_for('index'))
   return render_template('reg.html',form=form)

reg.html

<div class="LoginSquare">
{% block content %}
    <form method='POST' >

{{ form.csrf_token }}
{{form.RegcheckEmial(name='email',placeholder='Email')}}  \
{% for error in form.RegcheckEmial.errors %}
<span style="color:red;">{{ error }}</br></span>
{% endfor %}
<div class="d1">
<input type='submit'name='Register' id='awdwd'class='wdawd'>
</div>
</form>
{%endblock%}

错误控制台:jinja2.exceptions.undefinederror:“form”未定义,在顶级模板代码{%block content%}中,文件“c:\python39\lib\site packages\jinja2\environment.py”,第474行,在getattr return getattr(obj,attribute)中

yc0p9oo0

yc0p9oo01#

代码中有两个问题。
您不必使用文件名作为路由。它可以是“/注册”或“/注册”,您可以通过类似url的方式访问页面 www.site.com/register 如果你使用 /register 作为路线。
您只允许对url进行post请求,您将无法访问该网站。它会给你错误 405 method not allowed 错误。你需要允许 get 请求到url。
所以你的路线应该是:

@app.route('/register',methods=['POST','GET'])

你可以去 yoursite.com/register 访问该页面。
另外,我假设您访问了一个错误的url,因为您在问题中没有提供您没有提供的url form 变量转换为模板。

相关问题