Если вы переезжаете на продвинутых URLs я полагаю, вы понимаете, как основные работы URL разметки. Шаблоны регулярных выражений используются всякий раз, когда мы имеем дело с переменными шаблонами url, например. В случае блога, URL может читаться как
domain.com/post-1/
domain.com/post-2/
или
domain.com/shortpost-1/
domain.com/shortpost-2/
и так далее.
Здесь мы можем увидеть общий шаблон, который может быть связан как с листом страницы (или префиксом), так и с идентификатором страницы/сообщения. Итак, мы создаем две переменные: page_slug и page_id. (Примечание: имена переменных, как где-нибудь еще можно переименовать по своему вкусу регулярное выражение, следовательно, создается как /(?P<page_slug>\w+)-(?P<page_id>\w+))/'
где.
?P<>
: определяет, что мы определяем переменную
- <
text
>: текст является вашим именем переменной
\w+
: Ваше регулярное выражение, которое определяет, какой шаблон является приемлемым (In th is case \ w представляет что-либо в наборе [0-9a-zA-Z_]
и +
представляет любое количество повторений. Если вы хотите узнать больше об этом, я отправлю https://www.ntu.edu.sg/home/ehchua/programming/howto/Regexe.html для справки и http://regexr.com/ для практики.
- и
-
между собой просто принудительны текст, который мог быть заменен сказать -no-
выглядеть domain.com/page-no-1/
Остальная часть разметки похож на обычных URLs, что означает, что любой url, начинающийся в заданном шаблоне (?P<page_slug>\w+)-(?P<page_id>\w+)/
, за которым следует указанный суффикс.
например. - domain.com/post-1/history/
- handeled by views.history
и так далее.
Важная часть теперь заключается в том, как эти имена переменных влияют на ваши взгляды. Если вы используете взгляды функции на основе, на ваш взгляд история будет определяться как:
def history(request, page_slug, page_id):
#Your code using the two variables received.
#These might be values stored in db to dynamically fetch values
в представлениях на основе класса для доступа к параметрам URL-адреса, которые вы используете self.args
или self.kwargs
, так что вы бы получить доступ к нему, делая self.kwargs['page_slug']
В [docs (link)] (https://docs.djangoproject.com/en/1.10/topics/http/urls/#named-groups) это в значительной степени объяснено. –