我需要在完成注册过程时传递变量和响应对象,并在同一页面上显示成功消息。我尝试了很多方法,但我不知道该怎么做。请看这个场景并帮助我。
@app.route('/signup', methods=['POST', 'GET'])
def signup():
message = ''
email = ''
password = ''
resp = app.make_response(render_template('signup.html'))
if request.method == 'POST':
import datetime
email = request.form['emailInput']
password = request.form['pswdInput']
if len(password) < 3:
message = Markup("<p style='color:red;'> Password Length Should Be More Than 3 Character </p> ")
return render_template('signup.html', message = message)
expire_date = datetime.datetime.now()
expire_date = expire_date + datetime.timedelta(hours=1)
resp.set_cookie('userEmail', email, expires=expire_date)
resp.set_cookie('userPassword', password, expires=expire_date)
message = Markup("<h1> Registration successfull! </h1>")
resp.headers.set('message', message)
return resp
return render_template('signup.html', message = message)
HTML:
<div class="container">
<a href = "{{url_for('home')}}"> Home </a>
<form id="signup" method="POST" action="{{url_for('signup')}}">
<div class="header">
<h3>Sign Up</h3>
<p>You want to fill out this form</p>
</div>
<div class="sep"></div>
<div class="">
<input type="email" name="emailInput" placeholder="e-mail" autofocus />
<input type="password" name="pswdInput" placeholder="Password" />
<div class="">
<input name="joinCheck" name="joinCheck" value="1" type="checkbox" /><label class="terms">I accept the terms of use</label>
</div>
<input type="submit" id="submitBtn" value="Submit">SIGN UP FOR INVITE NOW</a>
</div>
<div>
{{message}}
</div>
</form>
</div>
答案 0 :(得分:1)
resp = app.make_response(render_template('signup.html'))
这会遗漏您的message
关键字。将其更改为:
resp = app.make_response(render_template('signup.html', message=message))
您还需要将此代码向下移动,因为它会直接将上面的message
变量视为空字符串并将其分配给其关键字。我会把它放在resp.set_cookie()
代码的正上方。
最后,移动一下:
message = Markup("<h1> Registration successfull! </h1>")
您移动的app.make_response()
代码之上。在初始化响应代码之前,需要设置message
变量。
只是一个小提示:我会将message = " "
更改为message = None
。否则,在编译的HTML中,它看起来就像是空的div
。在这个小案例中,这不会太有害,但我肯定会在未来的大型项目中成为经验法则。然后,在您的HTML中:
{% if message %}
<div>
{{message}}
</div>
{% endif %}
干杯。