美文网首页
Django-类视图

Django-类视图

作者: 测试探索 | 来源:发表于2022-09-18 11:51 被阅读0次

一、思考

如何在一个视图中处理get和post请求


image.png

二、类视图使用

在Django中也可以使用类来定义一个视图,称为类视图。使用类视图可以将视图对应的不同请求方式以类中的不同方法来区别定义
子应用中book/views.py

from django.shortcuts import render
from django.http import HttpResponse,JsonResponse
from book.models import BookInfo
import json,re

# Create your views here.
###############类视图######################
def login(request):
    print(request.method)

    if request.method == 'GET':
        return HttpResponse('get 逻辑')
    else:
        return HttpResponse("post 逻辑")
"""
类视图的定义
class 类视图名字(View)
    def get(self,request):
        return HttpResponse("xxx")
        
    def http_method_lower(self,request):
        return HttpResponse("xxx")
1、继承自View
2、类视图中的方法,是采用 http方法小写来区分不同的请求方式
"""
from django.views import View
class LoginView(View):
    def get(self,request):
        return HttpResponse('get get get')

    def post(self,request):
        return HttpResponse('post post post')

定义路由,book/urls.py

from django.urls import path
from book.views import create_book,shop,register,jsons,response,set_cookie,get_cookie,set_session,get_session,login,LoginView
from django.urls import converters
from django.urls.converters import register_converter

# 第一步.定义转换器
class MobileConverter:
    # 验证数据的关键是:正则
    regex = '1[3-9]\d{9}'

    # 验证没有问题的数据,给视图函数
    def to_python(self, value):
        return value

    # def to_url(self, value):
    #     # 将匹配结果用于反向解析传值时使用
    #     return value

# 第二步.注册转换器,才能在第三步中使用
# 参数讲解
#converter :转换器类
#type_name :转换器名字
register_converter(MobileConverter,'phone')


urlpatterns = [
    path('create/',create_book),
    # <转换器名字:变量名>
    # 转换器会对变量数据进行正则验证
    # 第三步,使用
    # int为系统自带转换器,python为自定义编写的转换器
    path('<int:city_id>/<phone:mobile>/',shop),
    path('register/',register),
    path('json/',jsons),
    path('res/',response),
    path('set_cookie/',set_cookie),
    path('get_cookie/',get_cookie),
    path('set_session/',set_session),
    path('get_session/',get_session),
    path('login/',login),

    #################类视图####################
    path('163login/',LoginView.as_view())

]
类视图-get请求
类视图-post请求
类视图-未定义put请求

相关文章

网友评论

      本文标题:Django-类视图

      本文链接:https://www.haomeiwen.com/subject/hnmdortx.html