【问题标题】:request not going through请求不通过
【发布时间】:2017-02-05 20:06:44
【问题描述】:

我正在创建一个登录页面,我发布的代码没有给出任何错误

如果 request.method == 'POST' 和 formLogin.validate():
        如果 formLogin.username_signin == 'admin' 和 formLogin.password_signin == 'admin':
            返回重定向(url_for('home')) 

即使我把管理员放在盒子里(wtforms),这段代码也会被跳过这是我正在使用的代码:

app = Flask(__name__)
app.secret_key = 'jjjjjjj'

@app.route('/')
def home():
    return render_template('home.html')


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


    formLogin = LoginForm(request.form)
    error = None

    if request.method == 'POST' and formLogin.validate():
        if formLogin.username_signin == 'admin' and formLogin.password_signin == 'admin':
            return redirect(url_for('home'))
        else:
            error = 'Please enter right credentials.'
            return render_template('login.html', error=error, formLogin=formLogin)

    return render_template('login.html', error=error, formLogin=formLogin)


if __name__ == '__main__':
    app.debug = True
    app.run()

我的 login.html:

{% extends 'base.html' %}

 {% block head %}
        <div class='container'>
            <div class='row'>
                <form method= post action='/login/'>
                    {{ formLogin.username_signin(class='form-control', placeholder='Username') }}
                    {{ formLogin.password_signin(class='form-control', placeholder='Password') }}
                    {{ formLogin.submit_signin(class='btn btn-primary') }}
                </form>
                <p><strong>Error:</strong>{{ error }}</p>
            </div>    
        </div>
        {% endblock %}

Form.py

from wtforms import Form,StringField, PasswordField, TextField, BooleanField, SubmitField, validators

class LoginForm(Form):  

    username_signin = StringField('SigninU', [validators.Required('please enter name')])
    password_signin = PasswordField('signinP', [validators.Required('need password')])
    submit_signin = SubmitField('Signin')

就像我说的一切正常,加载时我没有收到错误我的问题是,当我在两个框中输入“admin”而不是将我重定向到 home() 函数时,它只是直接跳到 else 语句。

【问题讨论】:

  • 你是如何定义 LoginForm 的?
  • 刚刚更新了登录表单的帖子
  • 我的下一步是为 formLogin 和 request.form 添加一些打印语句,以尝试解决实际分配的问题。
  • 如果我从数字海洋运行应用程序,我如何打印声明
  • 您是否尝试在输出中包含验证错误? {{ formLogin.username_signin.errors }}

标签: flask flask-wtforms


【解决方案1】:

您必须使用.data 才能访问get_data。

if request.method == 'POST' and formLogin.validate():
    if formLogin.username_signin.data == 'admin' and formLogin.password_signin.data == 'admin':
        return redirect(url_for('home')) 

【讨论】:

  • 谢谢你为我做的!
  • 如果答案是正确的,请将其标记为观众的正确答案..@quechon
猜你喜欢
  • 2022-08-07
  • 1970-01-01
  • 1970-01-01
  • 2016-07-03
  • 1970-01-01
  • 1970-01-01
  • 2021-09-21
  • 2021-09-12
  • 1970-01-01
相关资源
最近更新 更多