Добавление шаблонов URL-адресов для представлений

Шаблон URL-адреса состоит из регулярных выражений Python, view и имени, которое позволяет назвать его в масштабе проекта. Джанго выполняется по каждому шаблону URL-адреса и останавливается на первом, который соответствует запрошенному URL-адресу. Затем Джанго импортирует view соответствующего шаблона URL-адреса и выполняет его, передав экземпляр класса HttpRequest и ключевое слово или позиционные аргументы.

Если вы еще не работали с регулярными выражениями, вначале ознакомтесь с ними: https://docs.python.org/3/howto/regex.html

Создайте файл urls.py в каталоге приложения блога и добавьте следующие строки:

from django.conf.urls import url
from . import views

urlpatterns = [
    # post views
    url(r'^$', views.post_list, name='post_list'),
    url(r'^(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/'\
        r'(?P<post>[-\w]+)/$',
        views.post_detail,
        name='post_detail'),
]

Первый шаблон URL-адреса не принимает никаких аргументов и сопоставлен с post_list представлением(view). Второй шаблон принимает следующие четыре аргумента и сопоставляется с post_detail представлением. Рассмотрим регулярное выражение шаблона URL-адреса:

  • year: требуется четыре цифры.
  • month: требуется две цифры. Мы будем разрешать только месяцы с ведущими нулями.
  • day: требуется две цифры. Мы будем разрешать только дни с ведущими нулями.
  • post: может состоять из слов и дефисов.

Создание файла urls.py для каждого приложения является лучшей практикой, с помощью которой приложения могут многократно использоваться в других проектах.

Теперь необходимо включить шаблоны URL-адресов блога в основные шаблоны URL-адресов проекта. Измените файл urls.py, расположенный в каталоге mysite проекта:

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^blog/', include('blog.urls',
                            namespace='blog',
                            app_name='blog')),
]

Таким образом, вы говорите Джанго включить шаблоны URL-адресов, определенные в blog urls.py. Вы даете им пространство имен, называемое blog, так что можно легко обращаться к этой группе URL-адресов.

results matching ""

    No results matching ""