Django: лучшая практика для URL conf, тега шаблона url

#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-адреса, указывающие на одно и то же представление.