Добавление шаблонов 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-адресов.