Django的View:
一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应。响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片。
无论视图本身包含什么逻辑,都要返回响应。代码写在哪里也无所谓,只要它在你当前项目目录下面。除此之外没有更多的要求了——可以说“没有什么神奇的地方”。为了将代码放在某处,大家约定成俗将视图放置在项目(project)或应用程序(app)目录中的名为views.py的文件中。
看一下我们第一个应用中定义的view视图
from django.http import HttpResponse
from django.views import View
def index(request):
return HttpResponse("你好, django. You're at the polls index.")
函数视图:
上面是一个函数视图
- 函数视图的第一个参数是request,是HttpResponse的对象,包含前端用户的所有请求信息;
- 必须返回一个HttpResponse的对象或者子对象;
当浏览器向服务端请求一个页面时,Django创建一个HttpRequest对象,该对象包含关于请求的元数据。然后,Django加载相应的视图,将这个HttpRequest对象作为第一个参数传递给视图函数。每个视图负责返回一个HttpResponse对象。
类视图:
上面那种视图比较麻烦每次都需要定义很多,下面看一下类视图:
1. project1/views.py
中,定义 indexView类视图:
from django.http import HttpResponse
# Create your views here.
from django.views import View
def index(request):
return HttpResponse('你好,欢迎来到project1,index')
#定义类视图,主要参数是View,主要导入
class indexView(View):
'index主页类视图'
def get(self,request):
return HttpResponse('GET请求')
def post(self,request):
return HttpResponse('POST请求')
def delete(self,request):
return HttpResponse('delete请求')
def put(self,request):
return HttpResponse('PUT请求')
2.定义类视图路径,project1/urls.py
中:
from django.urls import path
from project1.views import index
from . import views
## 指定当前应用的命名空间
app_name = 'project1'
urlpatterns = [
# url路径,所映射的view方法,对应的名称
#使用类视图,需要使用,注意写法需要添加as_view
path('',views.indexView.as_view(),name='index')
]
3.运行后直接浏览器访问:
浏览器直接访问默认是get请求,此时可以在postman接口请求工具中进行验证post请求和别的请求;
4.发送post请求
发现访问被拦截,此时可以在根目录settings文件中进行注释掉CSRF验证:
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
#注释掉此行
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
然后再进行启动服务,现在可见请求post请求正常;别的请求相同;