Flash()不闪烁,而Redirect()不重定向

时间:2019-08-20 01:32:51

标签: python redirect flask

我在自己的网站上做了3个页面:一个要注册,另一个要登录,另一个用作“主页”。我需要让网站将用户从/register扔到/login,如果正确登录,将重定向到/home,否则它将发送一个带有一些文本的框,例如“无效密码” ”。但在代码中的任何地方都不起作用。

我搜索了很长一段时间...但是所有答案都说相同的话,这对我不起作用。

更新 login.html

<body>
<div>
    {% with messages = get_flashed_messages() %}
        {% if messages %}
            {% for message in messages %}
            <h4>{{ message }}</h4>
            {% endfor %}            
        {% endif %}
    {% endwith %}
</div>

<form class="box" action="">
    <h1>Login</h1>
    <input placeholder="Usuario" type="text" id="inpUser" required autocomplete="off">
    <input placeholder="Senha" type="password" id="inpPass" required>
    <input type="submit" value="Entrar" onclick="main()">
</form>
<script src="{{ url_for('static',filename='login.js') }}"></script>

更新 app.py/登录 他收到POST请求

@app.route('/login', methods = ['POST','GET'])
def login():
    error = None

    if request.method == 'POST':
        data = request.form.to_dict()
        username = data['User']
        password = hassh.blake2b(data['Password'])

        cur.execute("SELECT * FROM WebApp")
        rows = cur.fetchall()

        a = ''
        for i in username: #adiciona um SALT no hash
            if i.lower() == 'a' or i.lower() == 'e' or i.lower() == 'i' or i.lower() == 'o' or i.lower() == 'u':
                a+=i #coloca as vogais do username na variavel
            else:
                pass
        b = ''.join(reversed(a))
        password += b

        for row in rows:
            dbUsername = str(row[0])
            dbPass = str(row[1])
            if username == dbUsername and password == dbPass:
                valid = True
                break
            else:
                valid = False

        print(str(valid))
        if valid == False:
            return render_template('login.html',message='Credenciais invalidas')

        else:
            url_for('home')
            redir_url="http://192.168.0.4:5000/"
            return redirect(redir_url)

    return render_template('login.html')

我希望服务器上已有名称时,它会警告用户。 我希望用户创建帐户时,会将其从/register重定向到/login,如果登录正确,它将被发送到/home。 我希望如果登录错误,将使用户看到他错过了一些东西,一闪而过。

我没有从Flash或重定向返回的内容。登录/注册页面保持不变。此外,在用户输入正确的登录名后,他执行了我的@ app.route('/home')的代码,但没有打开页面,只是执行了print('home'),表示重定向是逻辑部分,而不是可视部分。如果可以将用户从登录名重定向到家庭,并显示闪光灯,我可以照顾/register

如有必要,我会发送完整的login.html和app.py。

Edit1 :我解决了Flash问题,只需将邮件的可视代码放在<div>

Edit2 :经过测试,我发现问题确实出在登录功能上,可能是JavaScript。我通过将我的家(仍然没有CSS和JS)重定向到/login来解决这个问题,但是没有/登录到家

Edit3 :不是CSS。并且flask尝试重定向后在控制台上返回192.168.0.4 - - [20 / Aug / 2019 19:00:36]" GET /home HTTP / 1.1 "200 -,但是它仍然不会更改URL。还有另一种更改网址的方法吗?重定向看起来好像没有转到浏览器...

Edit4 :“重定向”在IF结构中不起作用。好吧...

0 个答案:

没有答案