django-基于类的视图
所有视图继承自View类,例如,RedirectView用于HTTP重定向,TemplateView扩展基类使它能渲染模板。
例如index首页--改成View类
改写前后urls.py------
前:
from django.urls import path from . import views app_name = ‘polls‘ urlpatterns = [ path(‘‘, views.index, name=‘index‘) ]
后:
from django.urls import path from . import views app_name = ‘polls‘ urlpatterns = [ path(‘‘, views.IndexView.as_view(), name=‘index‘) ]
改写前后Views.py----
前:
from django.shortcuts import render from .models import Question def index(request): latest_question_list = Question.objects.order_by(‘-pub_date‘)[:5] context = {‘latest_question_list‘: latest_question_list} return render(request, ‘polls/index.html‘, context)
后:
from django.views import generic class IndexView(generic.ListView): template_name = ‘polls/index.html‘ context_object_name = ‘latest_question_list‘ def get_queryset(self): return Question.objects.filter().order_by(‘-pub_date‘)[:5]
也可以把IndexView里的属性写到urls.py中:任何传递到 <span>as_view()</span>
的参数将覆盖在类上设置的属性
path(‘‘, views.IndexView.as_view(template_name=‘polls/index.html‘), name=‘index‘),
1231