1. 视图函数介绍:
(1)一般放在views.py文件中;
(2)两个重要的对象:请求对象(request)与响应对象(HttpResponse)
2. 视图函数(简称视图),需要完成如下操作:
对于前端html提交给服务端的数据,做逻辑处理:
(1)通过request对象接收web请求的数据,并对入参做校验或额外的逻辑校验
【优化步骤:使用模块---from django import forms】
【在当前目录下新建forms.py,新建类:分别处理入参数据校验(例如:forms.CharField() 和 额外逻辑校验(def clean_username(self):)】
【然后views.py视图从forms.py中获取请求数据,对数据做进一步处理】
(2)返回web响应【响应可以是一个 HTML 页面、一个 404 错误页面、重定向页面、XML 文档、或者一张图片、或者是数据集locals()等】
(3)代码:
forms.py文件:
from django import forms
from . import models
class UserForm(forms.Form):
username=forms.CharField(max_length=10,min_length=5,required=True)
password=forms.CharField(max_length=32,min_length=6,required=True)
def clean_username(self):
username=self.data.get("username")
if models.User.objects.filter(username=username).exists():
self.add_error("username","用户已经存在")
else:
return username
views.py文件:
from user import forms
def register2(request):
form=forms.UserForm(request.POST)
if form.is_valid():
models.User.objects.create(**form.cleaned_data)
data = {"data": "0", "msg": "注册成功"}
return JsonResponse(data)
return JsonResponse(form.errors.get_json_data())
对于request接口提交给服务端的数据,做逻辑处理:
def request_test(request):
print(request.method) #请求方式
print(request.GET) #获取请求url中的参数,是个字典
print(request.GET.get("XXX")) #获取请求url字典里的数据
print(request.POST) # 获取请求body里传的参数
print(request.COOKIES.get("XXX")) #获取请求cookies里面的
print(request.META.get("HTTP_META")) #获取请求header里面传的meta。这里获取时前面必须有大写HTTP,且这里参数也要大写
# https://pythondjango.cn/blog/articles/?page=2
print(request.path) # 获取请求路径. `/blog/articles/`
print(request.path_info) # 【推荐使用】获取请求路径. `/blog/articles/`
print(request.get_full_path) # 获取请求路径 ‘blog/articles/?page=2’
print(request.FILES.get("file_name")) # 获取请求文件
print(re