Работа с Django? - PullRequest
       7

Работа с Django?

0 голосов
/ 24 мая 2011

После отделения файла url от нашего приложения мы сталкиваемся с проблемой:

Пример:

http://www.oursite.com/ourprefix/xyz/wsz

  1. Как обрабатывать URL в шаблоне (для размещениядля любого префикса (нашего префикса) в URL)
  2. Как сделать HttpResponseRedirect без жестко заданных URL-адресов (здесь также присутствует проблема с префиксом)

Ответы [ 2 ]

3 голосов
/ 24 мая 2011

Использовать именованные URL в urls.py.

  1. Использовать тег шаблона * {% url name %}.Это вставит правильный путь.
  2. Используйте reverse('name', **kwargs) для перенаправления.

пример:

в proj / urls.py:

patterns = patterns('',
   (r'^prefix/', include('proj.app.urls') ),
)

в proj / app / urls.py:

patterns = patterns('',
    url(r'object/^(?P<pk>\d+)/edit/', edit_object_view, name="edit"),
)

в proj / app / views.py:

return HttpResponseRedirect(reverse('app:edit', {'pk':pk}))

в proj / app / templates / app / my_template.py:

<a href="{% url app:edit pk=pk %}"> <!-- generates /prefix/object/123/edit/ -->
1 голос
/ 24 мая 2011

Если я вас правильно понял, вы хотите разрешить конкретное представление для URL внутри шаблона?

Вам следует использовать метод обратного URL в Django.См. здесь .

1) Для шаблона вы можете использовать:

<a href="/path/to/{{prefix}}/xyz"> Link </a>

Где префикс - это набор переменных в вашем контексте, который вы передаетешаблон.Вы также можете динамически выбрать правильный URL-адрес:

{% url application.views.viewfunc parameter1 parameter2 %}

Подробнее см. здесь .

2) Итак, для HttpResponseRedirect вы можете сделать:

HttpResponseRedirect(reverse(your_view_function))

Также принимает параметры.

...