我有登录html页面和索引html页面,但是当我写下用户名和密码时,该页面只会刷新而不执行任何操作。 我使用Django 2.x和Python 3.4
登录html中的代码:
<form class="form-signin" action='{% url 'myapp:index' %}' method="post">
{% csrf_token %}
<img class="mb-4" src='{% static 'app/img/logo.png' %}' alt="" width="300" height="100">
<h1 class="h3 mb-3 font-weight-normal">mysite</h1>
<br>
<div class="group">
<input type="username" id="inputUser" name="username" class="form-control" placeholder="Username" required autofocus alt="" width="300" height="100">
</div>
<div class="group">
<input type="password" id="inputPassword" name="password" class="form-control" placeholder="Password" required alt="" width="300" height="100">
</div>
<div>
<button class="btn btn-lg btn-primary btn-block" type="submit">Accedi</button>
</div>
</form>
这是我的观点:
def index(request):
username = request.post["username"]
password = request.post["password"]
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return render(request, "myapp/index.html")
我做错了什么? 谢谢
编辑:
我的error.log
AH00558:httpd.exe:无法使用fe80 :: 1c06:8ac5:1b1e:aa2f可靠地确定服务器的标准域名。全局设置“ ServerName”指令以禁止显示此消息 [2018年8月2日星期四12:35:17.911829] [mpm_winnt:notice] [pid 4196:tid 452] AH00455:配置了Apache / 2.4.34(Win64)mod_wsgi / 4.6.4 Python / 3.6-恢复正常运行 [2018年8月2日星期四12:35:17.912829] [mpm_winnt:notice] [pid 4196:tid 452] AH00456:构建的Apache Lounge VC15服务器:2018年7月11日13:09:01 [2018年8月2日星期四12:35:17.912829] [core:notice] [pid 4196:tid 452] AH00094:命令行:'c:\ Apache \ bin \ httpd.exe -d C:/ Apache' [2018年8月2日星期四12:35:17.913829] [mpm_winnt:notice] [pid 4196:tid 452] AH00418:父级:创建的子进程2112 AH00558:httpd.exe:使用fe80 :: 1c06:8ac5:1b1e:aa2f无法可靠地确定服务器的标准域名。全局设置“ ServerName”指令以禁止显示此消息 AH00558:httpd.exe:使用fe80 :: 1c06:8ac5:1b1e:aa2f无法可靠地确定服务器的标准域名。全局设置“ ServerName”指令以禁止显示此消息 [2018年8月2日星期四12:35:18.335853] [mpm_winnt:notice] [pid 2112:tid 472] AH00354:孩子:启动了64个工作线程。
我的access.log:
myip--[02 / Aug / 2018:12:35:28 +0200]“ GET / myapp / HTTP / 1.1” 200 2633 myip--[02 / Aug / 2018:12:35:48 +0200]“ POST / myapp / HTTP / 1.1” 200 2633
EDIT2: 我将url.py从路径更改为url并解决了问题...感谢大家,现在页面可以正确加载
答案 0 :(得分:0)
user = authenticate(request, username=username, password=password)
无需将请求作为参数传递
user = authenticate(username=username,password=password)
它可以解决您的错误。
另一种方式- 您也可以参考本教程: https://simpleisbetterthancomplex.com/tutorial/2016/06/27/how-to-use-djangos-built-in-login-system.html
答案 1 :(得分:0)
您可以尝试以下方法:-
from django.contrib.auth.forms import AuthenticationForm
def index(request):
form = AuthenticationForm(None, request.POST)
if form.is_valid():
login(request, form.get_user())
return render(request, "index.html", {'message':"successfully login"})