擅长:python、mysql、java
<p>您可以通过几种方法消除重复。在你的网址.py,可以将参数直接传递到视图:</p>
<pre><code># urls.py
urlpatterns = [
url(r'^xxxx/(?P<id>[0-9]+)$', views.BaseView.as_view(Type=X), name="view_x"),
url(r'^yyyy/(?P<id>[0-9]+)$', views.BaseView.as_view(Type=Y), name="view_x"),
]
</code></pre>
<p>这样,就不需要定义<code>XView</code>和<code>YView</code>。您可以更进一步,使用模型的URL参数。你知道吗</p>
<pre><code># urls.py
urlpatterns = [
url(r'^(?P<model>\w+)/(?P<id>[0-9]+)$', views.BaseView.as_view(), name='view_base'),
]
# views.py
class BaseView(View):
type_map = {
'xxxx': X,
'yyyy': Y,
}
def dispatch(self, request, *args, **kwargs):
model = kwargs.get('model')
self.type = self.type_map.get(model)
if self.type is None:
raise Http404
return super(BaseView, self).dispatch(request, *args, **kwargs)
</code></pre>