Передайте переменную (флаг) из urls.py в views.py в django - PullRequest
3 голосов
/ 17 октября 2011

В настоящее время у меня есть приложение «блог», которое будет отображать посты разных пользователей в зависимости от имени пользователя.Вот как выглядит мой 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/ отобразит конкретную запись в блоге.Я пытаюсь перенаправить посты участников выпускников на blog/alumni/authorname и blog/alumni/authorname/foo-post/ соответственно.Я добавил в свою модель пользователя поле, в котором будет указано, является ли пользователь выпускником или нет.

Функция просмотра в основном одинакова как для обычных пользователей, так и для выпускников.Вот что я пытался сделать до сих пор: внутри функции вида entries я добавил несколько строк, которые будут выполнять проверку члена выпускника.Если определенный автор блога является выпускником, будет HttpResponsePermanentRedirect до blogs/alumni/alumni_author/, и, поскольку часть рендеринга одинакова, вызовите ту же самую entries функцию просмотра.В общем, моя entries функция пытается проверить типы элементов , , отображая представление как для обычных, так и для выпускников .

1 Ответ

7 голосов
/ 17 октября 2011

Вы можете отправить флаг из urlconf в представление, используя необязательный третий параметр:

url(r'^alumni/(?P<blog_author>[^/]+)/$', 'entries', {'alumni': True}, name='blog'),
...