1.登陆界面
<html>
<head>
<title>Django Page</title>
</head>
<body>
<h1>发布会管理</h1>
<form method="post" action="/login_action/">
<input name="username" type="text" placeholder="username"><br>
<input name="password" type="password" placeholder ="password"><br>
<button id="btn" type="submit">登录</button>
{%csrf_token%}
</form>
</body>
</html>
2.GET
3.POST
CSRF :cross-site request forgery 跨站请求伪造
当页面向服务器发送一个POST请求时,服务器要求客户端加上 csrfmiddlewaretoken 字段,该字段的值为当前会话ID加上
一个密钥的散列值。如果想忽略该检查,也可以在setting.py文件中注释掉csrf
4. 处理登录请求
表单中的数据提交给服务器有两种方式,GET和POST.那么Django服务器时如何接收表单请求的数据并加以处理呢?可以通过
form表单的action属性来指定提交的路径。
<form method="post" action="/login_action/">
之后,在urls中添加路由:
path('login_action/',views.login_action),
视图函数,在views中添加login_action函数处理。获取用户提交的数据。
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
# return HttpResponse("Hello Django!")
return render(request,"index.html")
def login_action(request):
if request.method == "POST":
username = request.POST.get('username','')#如果key指定的值不存在,则默认返回 " "
password = request.POST.get('password','')
if username == 'admin' and password == 'admin123':
return HttpResponse("login success!")
else:
return render(request,"index.html",{'error':'username or password error!'})
此时,登陆页面密码或者用户名错误时,还不会显示错误信息。需要使用Djano的模板语言,添加 {{error}},它对应render 返回字典中的key,即‘error’.在登陆失败的页面显示对应的value。
<html>
<head>
<title>Django Page</title>
</head>
<body>
<h1>发布会管理</h1>
<form method="post" action="/login_action/">
<input name="username" type="text" placeholder="username"><br>
<input name="password" type="password" placeholder ="password"><br>
{{error}}<br>
<button id="btn" type="submit">登录</button>
{%csrf_token%}
</form>
</body>
</html>
5. 登陆成功页
from django.shortcuts import render
from django.http import HttpResponse,HttpResponseRedirect
# Create your views here.
def index(request):
# return HttpResponse("Hello Django!")
return render(request,"index.html")
# 登陆动作
def login_action(request):
if request.method == "POST":
username = request.POST.get('username','')#如果key指定的值不存在,则默认返回 " "
password = request.POST.get('password','')
if username == 'admin' and password == 'admin123':
return HttpResponseRedirect("/event_manage/")#路径重定向
else:
return render(request,"index.html",{'error':'username or password error!'})
# 发布会管理
def event_manage(request):
return render(request,"event_manage.html")
最后,不要忘记在Urls.py中设置路由。 path('event_manage/',views.event_manage),
6.cookies