#django #redirect #django-views #django-urls
#django #перенаправление #django-представления #django-URL-адреса
Вопрос:
В настоящее время у меня есть приложение «блог», которое будет отображать сообщения в блогах разных пользователей в зависимости от имени пользователя. Это то, что мой urls.py похоже на то.
urlpatterns = patterns('blog.views',
url(r'^(?P<blog_author>[^/] )/$', 'entries', name='blog'),
url(r'^(?P<blog_author>[^/] )/(?P<entry_slug>[^/] )/$', 'blog_entry', name='blog_entry'),
)
Таким образом, blog/authorname/
будут перечислены все записи в блоге этого конкретного автора и blog/authorname/foo-post/
будет отображаться конкретное сообщение в блоге. То, что я пытаюсь сделать, это постоянно перенаправлять сообщения в блогах участников alumni на blog/alumni/authorname
и blog/alumni/authorname/foo-post/
соответственно. Я добавил поле в свою пользовательскую модель, которое будет указывать, является ли пользователь выпускником или нет.
Функция просмотра в основном одинакова как для обычных пользователей, так и для выпускников. Вот что я пытался сделать до сих пор: внутри функции entries
просмотра я добавил несколько строк, которые выполняли бы проверку участника alumni. Если определенный автор блога является выпускником, будет HttpResponsePermanentRedirect
blogs/alumni/alumni_author/
и, поскольку часть рендеринга одинакова, вызовите ту же entries
функцию просмотра. Итак, по сути, моя entries
функция пытается выполнить проверку типов членов, отображая представление как для обычных, так и для выпускников.
Комментарии:
1. Мне кажется, что вам просто нужно настроить URL с
url(r'^alumni/(?P<blog_author>[^/] )/$', 'entries', name='blog_alumni'),
помощью и, конечно, не выполнять перенаправление.
Ответ №1:
Вы можете отправить флаг из urlconf в представление, используя необязательный третий параметр:
url(r'^alumni/(?P<blog_author>[^/] )/$', 'entries', {'alumni': True}, name='blog'),
Комментарии:
1. Прошу прощения за мой нубизм. Как я получу доступ к этому флагу из моей функции просмотра?
2. Обычным способом — он передается в качестве параметра функции, точно так же, как
blog_author
.