三、Django 视图

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

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值