view簡寫 TemplateView.as_view()


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' ), 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM