接上的翻译 two-scoops-django 1.5 第七章:函数视图与类视图
•视图、url和模型之间的送耦合已被紧耦合所取代,这意味着你永远不能重用视图定义。
•不要重复自己的代码这违反了CBVs之间反复使用相同/相似的论点。
•无限的灵活性(对于url)已被毁掉。类继承,基础视图类的主要有点,是不可能使用此反面模式。
•很多其他的问题:当你需要添加身份验证时会发生什么?你会打算使用两三个修饰符来封装URLConf吗?
将你的视图代码放入URLConfs会使得你的URLConfs变的混乱不堪。
事实上,我们从开发人员那听到看到定义在URLConf的CBVs 是开发者避免使用它们的原因之一。
好的,足够的抱怨。我们将在下一页展示我们的偏爱。
旨在URLConf松耦合
这里是讲解了如何创建URLconfs以避免在前面我们所提到的问题。
首先,我们写的视图如下:
# tastings/views.py
from django.views.generic import DetailView
from .models import Tasting
class TasteDetailView(DetailView):
model = Tasting
class TasteResultsView(TasteDetailView):
template_name = 'tastetests/results.html'
然后我们定义urls:
# tastings/urls.py
from django.conf.urls import patterns, url
from .views import TastingDetailView, TastingResultsView
urlpatterns = patterns('',
url(
regex=r'^(?P<pk>\d+)/$',
view=TastingDetailView.as_view(),
name='detail'
),
url(
regex=r'^(?P<pk>\d+)/results/$',
view=TastingResultsView.as_view(),
name='results'
),
)