我是一个新的编程和想要做一个网页的学习目的。
我想做的是显示一个错误,说“不正确的用户名/密码”的登录细节不正确。
实际上,我已经设法做到了,不过最近我学到了更多关于使用javascript制作“单页应用程序”的知识,并且正在尝试。 显然,它的优点是不需要加载那么多次。
编辑:经过进一步的考虑,我意识到我所拥有的也是一个“单页应用程序”,我的问题实际上更多的是Javascript是否有可能接收Flask的响应而不需要呈现新的HTML?
我想做一些事情,允许我将表单数据“发布”到flask(使用javascript),然后根据登录成功与否接收True或False。 如果它不成功,我想使用javascript中的。innerHTML给出错误消息,否则我将重定向到正确的页面。 这样做的目的是创建单页应用程序。防止再次呈现新的html模板
现在,我设法做到了完全不使用javascript,如下所示,但只是想知道是否有一种方法可以做到如我上面所描述的那样? 谢谢你的帮助!
py#/check_login执行身份验证。 /login将呈现frontpage并传递“invalid”参数。
@app.route('/login')
def login_page():
return render_template('frontpage_login.html', invalid = bool(request.args.get('invalid')))
@app.route('/check_login', methods = ['POST'])
def check_login():
if request.method == 'POST':
password = request.form['Password']
username = request.form['Username']
tempuser = User.query.filter_by(username = username).first()
if tempuser is not None:
if hashpass(password) == tempuser.password:
login_user(tempuser)
flash("Logged in successfully.")
return redirect(url_for('home_page'))
return redirect(url_for('login_page', invalid = True))
frontpage_login.html#基本上是一个正常的登录页面,如果invalid==true,将呈现消息。
{% extends 'frontpage_template.html' %}
{% block head %}
<a href="{{ url_for('front_page')}}">Home</a>
<div class = "currentlink"><a href="{{ url_for('login_page') }}">Login</a></div>
<a href="{{ url_for('register_page') }}">Register</a>
{% endblock %}
{% block content %}
<div class = "loginform">
<form action = "{{ url_for('check_login') }}" method = "POST">
<label for="Username" autofocus>Username</label><br>
<input type="text" id = "Username" name = "Username"><br>
<label for="Password">Password</label><br>
<input type="password" id = "Password" name = "Password"><br>
<input id = "Login" type = "submit" value = "Login">
</form>
</div>
{% if invalid == True %}
<p class = 'error'>The username or password is invalid!</p>
{% endif %}
{% endblock %}
您当然可以,这是使用socketio.io完成的。 这是文件。 这是非常容易使用,如果你有任何问题,欢迎在下面发表评论