- Django基础
- Django开发环境安装配置
- Django创建工程
- Django生命周期
- Django管理员界面
- Django创建视图
- Django URL映射
- Django模板系统
- Django模型
- Django页面重定向
- Django发送E-mail
- Django通用视图
- Django表单处理
- Django上传文件
- Django Apache配置
- Django Cookies处理
- Django Session会话
- Django缓存
- Django RSS
- Django Ajax应用
- Django快速入门
- Django快速入门-数据库模型
- Django快速入门-视图
- 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 −
<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 将得到 −
出于同样的结果,我们也可以,执行下列操作 −
- 不需要修改 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')),)
从数据库列表和显示数据
我们要列出所有条目在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发送E-mail
下一篇:Django表单处理
扫描二维码
程序员编程王