前端教程:Django通用视图

开课吧开课吧锤锤2021-08-11 14:02

在某些情况下编写视图代码,正如我们所看到前面工作真的很繁重。想象一下,只需要一个静态页面或列表页。 Django还提供了一种简单的方法来设置这些简单的视图被称为通用视图。  

前端教程:Django通用视图

不同于传统的视图,一般的视图是一个类但没有函数。Django还提供了一组类django.views.generic通用视图,以及每一个普通视图是这些类或从它们中的一个类继承的。  

有10+泛型类−  

>>> import django.views.generic
>>> dir(django.views.generic)

['ArchiveIndexView', 'CreateView', 'DateDetailView', 'DayArchiveView', 
   'DeleteView', 'DetailView', 'FormView', 'GenericViewError', 'ListView', 
   'MonthArchiveView', 'RedirectView', 'TemplateView', 'TodayArchiveView', 
   'UpdateView', 'View', 'WeekArchiveView', 'YearArchiveView', '__builtins__', 
   '__doc__', '__file__', '__name__', '__package__', '__path__', 'base', 'dates', 
   'detail', 'edit', 'list']

你可以使用通用视图。让我们来看一些例子来看看它是如何工作的。  

静态网页  

让我们从“static.html”模板发布静态页面。  

我们的static.html−  

<html>
   <body> 
      This is a static page!!! 
   </body>
</html> 

如果我们这样做,按以前学过的方式,我们将不得不改变myapp/views.py −  

from django.shortcuts import render

def static(request):
   return render(request, 'static.html', {}) 

myapp/urls.py如下 −  

from django.conf.urls import patterns, url

urlpatterns = patterns("myapp.views", url(r'^static/', 'static', name = 'static'),) 

最好的办法就是使用通用视图。对于这一点,我们的myapp/views.py将变成为 −  

from django.views.generic import TemplateView

class StaticView(TemplateView):
   template_name = "static.html" 

而我们的myapp/urls.py将如下 −  

from myapp.views import StaticView
from django.conf.urls import patterns

urlpatterns = patterns("myapp.views", (r'^static/$', StaticView.as_view()),) 

当访问 /myapp/static 将得到 −  

前端教程:Django通用视图

出于同样的结果,我们也可以,执行下列操作 −  

不需要修改views.py  

更改url.py文件为-  

from django.views.generic import TemplateView
from django.conf.urls import patterns, url

urlpatterns = patterns("myapp.views",
   url(r'^static/',TemplateView.as_view(template_name = 'static.html')),)

正如你所看到的,只需要改变url.py文件中的第二个方法。  

从数据库列表和显示数据  

我们要列出所有条目在Dreamreal模型。这样使用ListView通用视图类变得容易。编辑url.py文件,并对其进行更新-  

from django.views.generic import ListView
from django.conf.urls import patterns, url

urlpatterns = patterns(
   "myapp.views", url(r'^dreamreals/', ListView.as_view(model = Dreamreal, 
      template_name = "dreamreal_list.html")),
) 

重要的是要注意,在这一点上是变量通由通用视图到模板为object_list。如果你想自己的名字,将需要一个context_object_name参数添加到as_view方法。然后url.py成为 -  

from django.views.generic import ListView
from django.conf.urls import patterns, url

urlpatterns = patterns("myapp.views",
   url(r'^dreamreals/', ListView.as_view(
      template_name = "dreamreal_list.html")),
      model = Dreamreal, context_object_name = ”dreamreals_objects” ,) 

然后关联的模板将成为 −  

{% extends "main_template.html" %}
{% block content %}
Dreamreals:<p>
{% for dr in object_list %}
{{dr.name}}</p>
{% endfor %}
{% endblock %} 

访问/myapp/dreamreals/将产生如下页面 

前端教程:Django通用视图 

以上就是开课吧广场小编为大家整理发布的“前端教程:Django通用视图”一文,更多Web教程相关内容尽在开课吧广场Web教程频道!

免责声明:本站所提供的内容均来源于网友提供或网络搜集,由本站编辑整理,仅供个人研究、交流学习使用。如涉及版权问题,请联系本站管理员予以更改或删除。
有用
分享
全部评论快来秀出你的观点
登录 后可发表观点…
发表
暂无评论,快来抢沙发!
云开发实战特训营