view簡寫 TemplateView.as_view()
https://code.ziqiangxuetang.com/django/django-generic-views.html
(1)如果想省略view層,直接在url層返回頁面,則在本來要寫view函數位置的地方寫:TemplateView.as_view(template_name="要渲染的模板文件")
from django.views.generic import TemplateView
url(r"^profile/$", TemplateView.as_view(template_name='account/profile.html'), name="user_profile"),
雖然感覺這種寫法貌似破壞了分層的思想,后期如果要給這個url加上其他功能的話還要在寫成view文件的形式,要改的較多?
(2)如果想要給模板傳參數的話,需要自己寫一個類,繼承TemplateView類,並重寫他的get_context_data(self, **kwargs)方法:
# 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
# urls.py中
from django.conf.urls import patterns, url
from myapp.views import HomePageView
urlpatterns = patterns('',
url(r '^$' , HomePageView.as_view(), name = 'home' ),
)