Использовать вид оболочки.Сопоставьте 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)