【发布时间】:2019-06-19 08:15:59
【问题描述】:
所以,我正在通过 python 中的文件处理来制作登录系统。当我输入正确的用户名/密码时,代码可以正常工作,但是当我使用“else”语句作为用户输入错误密码时应该执行的条件时,它不起作用。
for line in open('accounts.txt','r+').readlines():
loginfo = line.split()
if a==loginfo[0] and b==loginfo[1]:
return render(request, 'login.html')
else:
return render(request, 'index.html')
- 这里执行循环,检查每一行,查看用户输入的用户名、密码是否在文件中。
- 我正在使用 getlines() 函数通过行获取用户的用户名和密码,这意味着每行应包含用户名和密码,并用空格分隔。
- 我正在使用 line.split 来拆分文件中的用户名和密码。
- 如果我删除“else”然后输入正确的密码,则代码可以正常工作,但当我输入错误的密码时它不能正常工作。
- 如果我将 'else' 条件放在循环中,那么它会弄乱算法,并且在第一次执行循环时会呈现网页。
- 我想要的是“else”条件应该只执行,网页“index.html”应该只在文件被完全检查时显示(这意味着for循环最后一次执行)并且在文件中找不到用户输入的用户名/密码。
【问题讨论】:
-
无论 for 循环的第一次迭代,你都会返回,所以它只会检查第一行
-
在 Django 应用程序中使用纯文本文件登录 ???你是认真的???