Я ищу хороший учебник по пространствам имен URL в Django. Я нахожу официальную документацию слишком скудной — ей не хватает хороших примеров. Я нашел похожий вопрос здесь, в стеке, но ответы не помогите мне полностью понять тему либо.
Кто-нибудь знает хороший учебник по пространствам имен URL-адресов Django?
comment
Вы проверили документ диспетчера URL-адресов в https://docs.djangoproject.com/en/1.3/topics/http/urls/#naming-url-patterns Я рекомендую вам прочитать весь раздел, потому что, если вы понимаете основы того, как это работает, вам будет легче понять
- person FallenAngel   schedule 28.05.2011
comment
@FallenAngel: моя точка зрения остается неизменной - в официальной документации нет хороших примеров использования пространств имен.
- person minder   schedule 12.06.2011
Ответы (2)
Согласитесь, документы для этого довольно запутаны. Вот мое прочтение (NB: весь код не проверен!):
In apps.help.urls
:
urlpatterns = [
url(r'^$', 'apps.help.views.index', name='index'),
]
В вашем основном urls.py
:
urlpatterns = [
url(r'^help/', include('apps.help.urls', namespace='help', app_name='help')),
url(r'^ineedhelp/', include('apps.help.urls', namespace='otherhelp', app_name='help')),
]
В вашем шаблоне:
{% url help:index %}
должен создать URL-адрес /help/
.
{% url otherhelp:index %}
должен создать URL-адрес /ineedhelp/
.
{% with current_app as 'otherhelp' %}
{% url help:index %}
{% endwith %}
также должен создавать URL-адрес /ineedhelp/
.
Точно так же reverse('help:index')
должно произвести /help/
.
reverse('otherhelp:index')
должно произвести /ineedhelp/
.
reverse('help:index', current_app='otherhelp')
также должно производить /ineedhelp/
.
Как я уже сказал, это основано на моем чтении документации и моем существующем знакомстве с тем, как все работает в Django-land. Я не нашел времени, чтобы проверить это.
person
David Eyk
schedule
09.09.2011
почему нам нужно установить app_name и namespace? Просто интересно. Кажется, это также работает, если не установить app_name
- person Sam Stoelinga; 03.10.2012
Хорошее предложение. Я обычно стараюсь читать как можно больше источников, но не могу напрямую найти соответствующую часть, буду копать дальше. Прочтите перед этим хорошую статью, в которой сказано: Источник никогда не врёт, но руководство может лгать. По сути, он говорил людям читать исходный код, если они столкнулись с проблемой или неправильно использовали API, хе-хе.
- person Sam Stoelinga; 05.10.2012
Будь осторожен. У меня работает, но без кавычек: {% url help:index %}
- person dani herrera; 04.01.2013
ак! Я никогда не могу вспомнить, когда я должен цитировать вещи или нет в тегах шаблона Django. Хороший улов.
- person David Eyk; 04.01.2013
Это из документов
(r'^help/', include('apps.help.urls', namespace='foo', app_name='bar')),
Возможно, вам следует более конкретно указать, что вы пытаетесь сделать.
person
Facundo Casco
schedule
08.07.2011