视图Views-一般视图

前面我们介绍了Django的路由系统,其将浏览器输入的页面请求分发给不同的视图函数进行处理,通过视图函数返回浏览器需要的结果。本章详细介绍一下Django的视图View。

视图Views概述

  1. 作用:视图接受web请求并响应web请求
  2. 本质: 视图就是python中的处理函数(类)
  3. 响应: 一般是一个网页的HTML内容、一个重定向、错误信息页面、json格式的数据

视图views分为基于函数的视图(FBV)和基于类的视图(CBV)

基于函数的视图

定义

# urls.py
from django.urls import path
from myapp import views

urlpatterns = [
    path('hello/', views.index),
]
def index(request, arg):
    if request.method == 'POST':
        return HttpResponse('method is :' + req.method + ', argument is ' + str(arg))
    elif request.method == 'GET':
        return HttpResponse('method is :' + req.method + ', argument is ' + str(arg))

说明

  • 路由使用文件名加函数名找到视图函数,如(views.index)
  • 视图函数默认第一个函数是一个HttpRequet对象
  • 函数内部根据HttpRequest不同的请求方法,进行不同的处理

基于类的视图

定义

# urls.py
from django.urls import path
from myapp import views

urlpatterns = [
    path('hello/', views.Index.as_view()),
]
# views.py
from django.views import View

class Index(View):
    def get(self, request):
        print(‘method is :‘ + request.method)
        return render(request, ‘index.html‘)

    def post(self, request):
        print(‘method is :‘ + request.method)
        return render(request, ‘index.html‘)

说明

  • 路由使用文件名加类名加as_view方法找到对应的视图函数
  • 视图类以View为基类,在其内部根据不同的HttpRequest请求方法实现不同的函数来进行处理,如def get(self, request)代表处理来自GET方法的请求、def post(self, request)代表处理来自POST方法的请求
  • 类中函数名必须小写
Copyright © itrunner.cn 2020 all right reserved,powered by Gitbook该文章修订时间: 2022-08-28 07:44:16

results matching ""

    No results matching ""