Django入门(7)之view视图
View视图
视图函数或视图简而言之就是一个Python函数,它接受一个Web请求并返回一个Web响应
此响应可以是网页的HTML内容,重定向或404错误,XML文档或图像。
-
返回错误
1
2
3
4
5
6
7
8
9
10from django.http import HttpResponse,Http404,HttpResponseNotFound
def viewsdemo(request):
# 直接返回一个404,没有去加载404的模板页面
# return HttpResponseNotFound('<h1>Page not found</h1>')
# 可以直接返回一个status状态码
# return HttpResponse(status=403)
# 返回一个404的错误页面
raise Http404("Poll does not exist") -
关于重定向
1
2
3
4
5
6
7from django.shortcuts import redirect,render
from django.urls import reverse
def viewsdemo(request):
# 重定向 redirect 参数 重定向的url地址
# return redirect(reverse('ontoone'))
context = {'msg':'恭喜注册成功,即将跳转到登录页','u':reverse('ontoone')}
return render(request,'info.html',context) -
HttpReqeust对象
1
2
3
4
5
6
7
8
9
10
11
12
13
14def viewsdemo(request):
# 请求对象 request ==> HttpRequest
# 获取当前的请求地址 path路径
print(request.path)
# 获取请求方式
print(request.method)
# GET是请求对象的一个属性,但是GET本身也是一个类字典的对象
print(request.GET)
# 获取GET中参数,POST和GET一样
#print(request.GET.get('a','1'))
#print(request.GET['a'])
return HttpResponse('视图的操作') -
请求地址中的一键多值
1
2
3
4
5
6
7
8
9
10
11
12
13
14def form(request):
# 判断请求的方式
if request.method == 'GET':
# 加载一个表单模板
return render(request,'form.html')
else:
# 接收表单数据
data = request.POST
# print(data)
# 出现一键一值的情况使用get方法来获取,多值不能使用
# print(request.POST.get('hobby'))
print(request.POST.getlist('hobby'))
print(request.GET.getlist('a'))
return HttpResponse('接收表单数据')form.html的代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14<form action="" method="POST">
{% csrf_token %}
用户名: <input type="text" name="username"><br>
密码: <input type="password" name="password"><br>
邮箱: <input type="text" name="email"><br>
年龄: <input type="text" name="age"><br>
性别: <label><input type="radio" name="sex" value="0">女</label>
<label><input type="radio" name="sex" value="1">男</label><br>
爱好: <label><input type="checkbox" name="hobby" value="0">抽烟</label>
<label><input type="checkbox" name="hobby" value="1">喝酒</label>
<label><input type="checkbox" name="hobby" value="2">烫头</label>
<br>
<button>提交</button>
</form> -
JsonResponse
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18from django.http import HttpResponse,JsonResponse
def index(request):
import json
# 响应 模板文件
# return HttpResponse('hello world')
data = {'name':'zahngsan','age':20,'sex':'男'}
# data = [
# {'name':'zahngsan','age':20,'sex':'男'},
# {'name':'王五','age':22,'sex':'男'},
# ]
# 使用python的json 转为json格式再返回
# content-type: html
# return HttpResponse(json.dumps(data))
# 返回json数据 content-type: json
return JsonResponse(data,safe=False)
cookie和session
http请求是无状态的请求,请求中并不清楚你上一次请求的情况。
在很多情况下需要记住用户的一些状态,这个时候就需要使用会话跟踪技术,会话控制。
cookie是在浏览器中进行数据的保存,并且在每次请求时会携带保存的数据去访问服务器。
session是把数据存在的服务器端(文件,数据库,内存)并且生成一个sessionid记录到cookie中。
设置cookie
1 | def cookie_set(request): |
获取cookie
1 | def cookie_get(request): |
Django中session需要依赖数据库,因此需要确认数据库中是否存在与session相关的表。
设置session
1 | def session_set(request): |
获取session
1 | def session_get(request): |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 WeiJia_Rao!