django-基于类的视图

Posted staff

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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中:任何传递到 as_view()  的参数将覆盖在类上设置的属性

path(‘‘, views.IndexView.as_view(template_name=‘polls/index.html‘), name=‘index‘),

1231

 

以上是关于django-基于类的视图的主要内容,如果未能解决你的问题,请参考以下文章

如何在 django 中使用基于类的视图

django-基于类的视图

Django:在基于类的视图中包含媒体(css/js)

基于 Django 类的视图:发布表单数据返回 302 Found 状态码

从基于类的视图模板中的 django 打印变量

Django 使用 URL 参数在基于类的视图中查询数据库