常用的通用视图:
- View
- TemplateView
- RedirectView
1. django.views.generic.base.View
这个类是通用类的基类,其它类都是继承自这个类,一般不会用到这个类,个人感觉用函数更简单些。
[Python]
纯文本查看
复制代码
1 2 3 4 5 6 7 8 | # views.pyfrom django.http import HttpResponsefrom django.views.generic import View class MyView(View): def get(self, request, *args, **kwargs): return HttpResponse('Hello, World!') |
绑定路由:
[Python]
纯文本查看
复制代码
1 2 3 4 5 6 7 8 | # urls.pyfrom django.conf.urls import patterns, url from myapp.views import MyView urlpatterns = patterns('', url(r'^mine/$', MyView.as_view(), name='my-view'),) |
2. django.views.generic.base.TemplateView
在 get_context_data() 函数中,可以传一些 额外内容 到 模板
[Python]
纯文本查看
复制代码
01 02 03 04 05 06 07 08 09 10 11 12 13 14 | # views.py from django.views.generic.base import TemplateView from articles.models import Article class HomePageView(TemplateView): template_name = "home.html" def get_context_data(self, **kwargs): context = super(HomePageView, self).get_context_data(**kwargs) context['latest_articles'] = Article.objects.all()[:5] return context |
绑定路由
[Python]
纯文本查看
复制代码
1 2 3 4 5 6 7 8 9 | # urls.py from django.conf.urls import patterns, url from myapp.views import HomePageView urlpatterns = patterns('', url(r'^$', HomePageView.as_view(), name='home'),) |
3. django.views.generic.base.RedirectView
用来进行跳转, 默认是永久重定向(301),可以直接在urls.py中使用,非常方便:
[Python]
纯文本查看
复制代码
1 2 3 4 5 6 7 | from django.conf.urls import patterns, urlfrom django.views.generic.base import RedirectView urlpatterns = patterns('', url(r'^go-to-django/$', RedirectView.as_view(url='http://djangoproject.com'), name='go-to-django'), url(r'^go-to-ziqiangxuetang/$', RedirectView.as_view(url='http://www.ziqiangxuetang.com',permant=False), name='go-to-zqxt'),) |