#django #django-views #django-urls #django-templates
#django #django-просмотры #django-urls #django-шаблоны
Вопрос:
Поскольку представления на основе классов стали НАМНОГО лучше в Django, я столкнулся с проблемой «лучших практик» при реализации представления на основе классов. В основном это сводится к тегу шаблона URL.
Учитывая urls.py вот так:
urlpatterns = patterns('some_app.views',
url(r'^$', 'index', name='some_app_index')
)
Этот тег может указывать либо путь к представлению, либо:
{% url some_app.views.index %}
или имя URL-адреса:
{% url some_app_index %}
Теперь, с url conf на основе классов, в итоге получается URL, подобный этому:
from some_app.views import Index
urlpatterns = patterns('',
url(r'^$', Index.as_view(), name='some_app_index')
)
Это означает, что использование {% url some_app.views.index %}
больше не работает, но {% url some_app_index %}
все еще работает. (И {% url some_app.views.Index.as_view %}
, похоже, это не решение проблемы).
Итак, мой вопрос в том, что является наилучшей практикой для ссылки на URL confs из шаблона?
До этого момента я полагал, что использование метода path.to.view было лучше, поскольку он имел чистое пространство имен. Однако, поскольку представления на основе классов выглядят все лучше и лучше, является ли использование имени URL лучшим способом? В этом случае пространство имен полностью зависит от атрибута name, который устанавливается разработчиком приложения таким образом, чтобы отделять имя url от других приложений…
Мысли? Я не смог найти «сделать это таким образом» в документации Django, но если кто-нибудь написал об этом, я бы с удовольствием прочитал.
Ответ №1:
Я всегда использую имена.
Помимо проблемы, о которой вы упоминаете с путями, у вас также возникнет проблема, если у вас есть два URL-адреса, указывающие на одно и то же представление.