使用包装视图。将 URL 映射到您自己的视图,然后调用 article.views.article_view。然后,您可以在包装视图中更改您想要的任何内容。
例子:
urlpatterns = patterns('',
(r'^articles/(?P<article_id>\d+)/$', 'article_wrapper.wrap_article_view'),
)
在article_wrapper.py:
import article
def wrap_article_view(request, article_id):
article_id = modify_it(article_id)
return article.views.article_view(request, article_id)
更新:
如果您需要为多个视图执行相同的article_id 翻译,您可以使包装器更通用。示例:
urlpatterns = patterns('',
url(r'^articles/(?P<article_id>\d+)/$',
view='article_wrapper.generic_article_wrapper',
kwargs={'view_name':'article_view'}
),
)
在article_wrapper.py:
import article
def generic_article_wrapper(request, article_id, view_name=None):
article_id = modify_it(article_id)
try:
view = get_attr(article.views, view_name)
except AttributeError:
# handle invalid view name
return view(request, article_id)