Python 低安全性密码/用户名安全性错误

Python 低安全性密码/用户名安全性错误,python,flask,internal-server-error,Python,Flask,Internal Server Error,基本上,只是尝试创建一个简单的登录页面,它几乎没有任何安全性,但不断出现内部服务器错误,任何关于我出错的地方的帮助都将不胜感激。我试着到处找,但什么也找不到。我对Python也是相当陌生的,所以请放轻松:) 蟒蛇/烧瓶: @app.route('/adminlogin') def admin(): return render_template('adminlogin.html') @app.route('/adminDetails', methods =['POST'])

基本上,只是尝试创建一个简单的登录页面,它几乎没有任何安全性,但不断出现内部服务器错误,任何关于我出错的地方的帮助都将不胜感激。我试着到处找,但什么也找不到。我对Python也是相当陌生的,所以请放轻松:)

蟒蛇/烧瓶:

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

@app.route('/adminDetails', methods =['POST'])  
    def adminLogin():
        correctUser = 'admin'
        correctPass = 'Password1'
        username = request.form['username']
        password = request.form['password']

    if username == correctUser & password == correctPass:
        adminSuccess()
    else: 
        admin()


@app.route('/admin')
def adminSuccess():
    return render_template('admin.html')
HTML:


由于我不能发表评论,我不得不在回答部分留下这条建议
您应该尝试在debug设置为true的情况下运行应用程序。这将为您提供导致错误的原因的完整回溯,而不是“内部服务器错误”

追踪后,我们都能更好地帮助你

编辑:您的回溯表明您的视图函数实际上没有返回任何内容。他们需要做出某种回应。因此,您需要做的是在
adminLogin()
视图中的if-else语句中返回这些函数调用,这一行是错误的:

if username == admin & password == Password1:
应该是:

if username == admin and password == Password1:

例如:

>>> 1 == 1 & 2 == 2
False
您可以给我们完整的错误日志,这样我们就可以找出错误


错误日志显示原因:

ValueError:View函数未返回响应

因此,您需要重定向到页面

@app.route('/adminDetails', methods =['POST'])  
def adminLogin():
    correctUser = 'admin'
    correctPass = 'Password1'
    username = request.form['username']
    password = request.form['password']

    if username == correctUser and password == correctPass:
        return redirect(url_for('adminSuccess'))
    else: 
        return redirect(url_for('admin'))

文档:

请阅读错误消息。他们大概会告诉你,
Password1
没有定义,但它没有定义。您希望该变量的值来自何处?来自HTML中的表单?哦,等等,我明白您的意思。截至目前,debug=True会导致一个错误(errno 9)。好的,这听起来可能很琐碎,但既然您说您是Python新手,我想值得一提的是
def adminLogin():
没有涉及。我真的希望不是这样:pI修复了python,回溯以ValueError结束:View函数没有返回responseOkay,所以我在本地复制粘贴了整个代码,为了让它运行,我修复了一些东西。在模板中,将提交按钮更改为输入类型<代码>,在您看来,将
&
更改为
,正如这里的另一位回答者所解释的,在Python中
&
的性能与您想象的不一样。我希望这有帮助:)哦。在if和else语句中,您需要在每个函数调用之前放置
return
。因此,就像
return admin()
一样,我没有收到任何错误,我只是在浏览器中收到了一个内部服务器错误。使用调试模式,它会给你完整的回溯。我现在已经发布了完整的回溯
if username == admin and password == Password1:
>>> 1 == 1 & 2 == 2
False
@app.route('/adminDetails', methods =['POST'])  
def adminLogin():
    correctUser = 'admin'
    correctPass = 'Password1'
    username = request.form['username']
    password = request.form['password']

    if username == correctUser and password == correctPass:
        return redirect(url_for('adminSuccess'))
    else: 
        return redirect(url_for('admin'))