Django-简述generic views
Posted daemonfly
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django-简述generic views相关的知识,希望对你有一定的参考价值。
Use generic views: Less code is better.
These views represent a common case of basic Web development: getting data from the database according to a parameter passed in the URL, loading a template and returning the rendered template. Because this is so common, Django provides a shortcut, called the "generic views" system.
Generic views abstract common patterns to the point where you don‘t even need to write Python code to write an app.
Let‘s convert our poll app to use the generic views system, so we can delete a bunch of our own code. We‘ll just have to take a few steps to make the conversion. We will:
- Convert the URLconf.
- Delete some of the old, unneeded views.
- Introduce new views based on Django‘s generic views.
# polls/views.py from django.http import HttpResponseRedirect from django.shortcuts import get_object_or_404, render from django.urls import reverse from django.views import generic from .models import Choice, Question class IndexView(generic.ListView): template_name = ‘polls/index.html‘ context_object_name = ‘latest_question_list‘ def get_queryset(self): """Return the last five published questions.""" return Question.objects.order_by(‘-pub_date‘)[:5]
# def detail(request, question_id): # question = get_object_or_404(Question, pk=question_id) # return render(request, ‘polls/detail.html‘, ‘question‘: question)
class DetailView(generic.DetailView): model = Question template_name = ‘polls/detail.html‘ class ResultsView(generic.DetailView): model = Question template_name = ‘polls/results.html‘
- 每个通用视图都需要知道它将作用于什么模型(models)。这是使用model属性提供的。
- DetailView 通用视图期望从URL捕获的主键值被称为“pk”,因此我们将泛型视图的问题id更改为pk。
以上是关于Django-简述generic views的主要内容,如果未能解决你的问题,请参考以下文章
django 1.9 中的 from django.views.generic.simple import direct_to_template 相当于啥
python - Django4 - 表格&generic view
python 没有PK或Slug的Django Generic DetailView
Django REST framwork-03-使用mixin和基于类的通用(generics)视图