django 类视图
首先views.py导入
from django.shortcuts import render
from django.http import HttpResponse,HttpResponseRedirect
#导入类视图模块
from django.views import View
#导入数据库
from mysite.models import User
#导入类视图模块模板
from django.views.generic import TemplateView
#导入通用类视图
from django.views.generic import ListView
#定义一个通用类视图
class MyList(ListView):
#指定模板名称
template_name = "myapp/mytem.html"
#指定变量名称
# context_object_name = "user_list"
#读取数据库 使用重写
def get_queryset(self):
user_list = User.objects.all()
return user_list
#定义一个混合视图
class MyClassDef(View):
def get(self,request):
return render(request,"d2_index.html")
#定义一个类视图,用来渲染模板文件
class MyTem(TemplateView):
template_name = "myapp/mytem.html"
#定义一个子应用的视图方法
def myapp_index(request):
return HttpResponse("子应用的视图方法")
#定义类视图
class MyView(View):
hello = '你好'
def get(self,request):
return HttpResponse(self.hello)
def post(self,request):
return HttpResponse("POST方法")
def put(self,request):
return HttpResponse("put方法")
def delete(self,request):
return HttpResponse("delete方法")
#定义继承类
class MySon(MyView):
def get(self,request):
return HttpResponse(MyView.hello)
然后建立子应用的urls.py路由文件
from django.urls import path,re_path
from myapp.views import myapp_index,MyView,MySon,MyTem,MyList,MyClassDef
#导入类视图模块模板
from django.views.generic import TemplateView
# 写路由配置列表
urlpatterns = [
path("/myapp_index",myapp_index),
#定义一个类视图的路由,必须用as_view()方法来初始化类
path("/myview",MyView.as_view(hello="你好啊")),
path("/myson",MySon.as_view()),
path("/mytem",MyTem.as_view()),
path("/mytem_one",TemplateView.as_view(template_name="myapp/mytem.html")),
path("/mylist",MyList.as_view()),
path("/myclassdef",MyClassDef.as_view()),
]