LOADING

Follow me

Django 学习笔记(十一)
十一月 23, 2013|IT

Django 学习笔记(十一)

Django 学习笔记(十一)
近来在看two-scoops-django 1.5,也就随手翻译了第七章:

 

Function and Class-Based Views

 

Django 1.5中基于函数的是视图(FBVs)和基于类视图(CBVs)。我们建议您了解如何使用这两种类型的视图

 

Tip:FBV 是不被反对的

 

之前关于这个版本注释的措辞和发布在博客上不正确的信息有些许困惑先在此澄清:   

 

1.在Django 1.5基于函数的视图依然被支持Django中没有去掉函数视图计划函数视图依旧被大量使用

 

      2.如direct_to_template和object_list这些基于函数的视图在Django 1.3和1.5中删除

 

什么时候使用FBs 或 CBVs

 

当你实现一个视图中,考虑实现FBV或CBV中的哪一个。一些视图最好的实现CBVs,而其他的是最好的实现FBVs。  

 

如果你不确定选择哪种方法,在下一页我们准备的流程图可能对你有帮助流程图
循我们的偏爱使用CBVs
超过
FBVs

 

 

对于大多数视图我们宁可使用CBVs,使用FBVs来实现复杂的视图,CBVs实现将是一个痛苦的过程。

 

Tip:可选方法-学习使用FBVs

 

一些开发人员对大多数视图更喜欢使用FBVs和而使用CBVs视图需要派生子类。这个策略也是好的。

 

使视图逻辑与URLConf分离

 

通过URLConfs映射到视图,通常在一个命名为urls.py模块中。每个Django URL的设计理念(https://docs.djangoproject.com/en/1.5/misc/designphilosophies/url-design),

 

是url与视图的松耦合,允许适度宽松,鼓励最佳实践。

 

Django的提供极其简单的方法定义URL路径。像其他一切事物一样,我们提出在这本书中,简单是一种荣誉和尊重。

 

经验法则是显而易见的:

 

1.视图模块需要包涵视图逻辑

 

2.URL模块需要包涵URL逻辑

 

code如下所示:

 

# Similar to the Polls example

from django.conf.urls import patterns, url

from django.views.generic import DetailView

from tastings.models import Tasting

urlpatterns = patterns(”,
url(r’^(?P<pk>\d+)/$’,
DetailView.as_view(
model=Tasting,
template_name=’tastings/detail.html’),
name=’detail’),

url(r’^(?P<pk>\d+)/results/$’,
DetailView.as_view(
model=Tasting,
template_name=’tastings/results.html’),
name=’results’),

)

 

乍一看这段代码似乎不错,但我们认为它违反了Django设计哲学;

 

后续翻译会跟上

 

 

 

 

 

 

 

 

 

 

 

no comments
Share

发表评论