Такие читатели, как вы, помогают поддерживать MUO. Когда вы совершаете покупку по ссылкам на нашем сайте, мы можем получать партнерскую комиссию.

Без динамической маршрутизации навигация по веб-страницам была бы затруднена. Вам нужно будет ввести полный путь к каждой странице, которую вы посещаете в браузере. Какой ужасный пользовательский опыт.

Динамические унифицированные указатели ресурсов (URL) позволяют переходить на разные страницы приложения одним нажатием кнопки. Django упрощает создание динамических URL-адресов. Он имеет модуль конфигурации URL-адресов (URLconf), который связывает выражения URL-адресов с представлениями.

Весь код в URLconf имеет синтаксис Python, что упрощает создание динамических URL-адресов. Давайте узнаем больше о динамических URL-адресах, создав проект Django.

1. Создать проект Джанго

Первый, создать проект Джанго и приложение (приложение).

Назовите свое приложение Бома-часы. Приложение будет собирать местоположение, описание и номера жителей из разных районов. Создайте модель с именем

instagram viewer
Район. Используйте модель для добавления информации о районах в базу данных. Узнайте, как создавать модели в джанго и базу данных, если вы не знакомы.

Затем создайте функцию просмотра для окрестностей.

2. Создайте функцию просмотра

В Django представления — это функции Python, которые принимают HTTP-запросы и возвращают ответы. На веб-странице, поддерживаемой Django, представления выполняют различные задачи и миссии.

Чтобы выполнить представление, вы должны вызвать его через URL-адрес. URL — это уникальный путь к ресурсу в Интернете. Ресурс может быть HTML-страницей, изображением или конечной точкой API.

Создайте URL-адрес, который извлекает данные о районе на основе переданных параметров. Для этого вы можете использовать первичный ключ (пк) или Идентификация (идентификатор) чтобы получить информацию. Для этого вы будете использовать один шаблон.

Вы можете создавать представления, определяя их в файле с именем просмотры.py в папке приложения. Начните с импорта оказывать функция из Django для отображения данных по URL-адресу. Также импортируйте Район модель из модели.py.

от django.shortcuts Импортировать оказывать
от .модели Импортировать Район

Затем создайте функцию просмотра с именем дом который отображает все районы на домашнем шаблоне. NeighborHood.objects.all() функция получает данные для всех окрестностей из базы данных.

дефдом(запрос):
окрестности = NeighbourHood.objects.all()
вернуть рендер (запрос, "home.html", {'окрестности':окрестности})

Кроме того, создайте функцию просмотра для join_hood который будет отображать информацию о районе. NeighbourHood.objects.get (id=id) функция запрашивает данные по идентификатору. Затем информация отображается в шаблоне.

дефjoin_hood(запрос, идентификатор):
окрестности = NeighbourHood.objects.get (id=id)
вернуть рендер (запрос, 'join_hood.html', {'район':район})

Позже, когда вы перейдете к району, вы сможете увидеть информацию о его профиле.

3. Создать динамический URL

Теперь вы можете создать динамический URL-адрес для созданной вами функции просмотра.

от django.urls Импортировать путь
от. Импортировать Просмотры
от django.conf Импортировать настройки
от django.conf.urls.static Импортироватьстатический
отДжанго.contrib.staticfiles.urlsИмпортироватьstaticfiles_urlpatterns

URL-шаблоны = [
путь ('дом', views.home, имя ='дом'),
путь ('присоединяйся_капюшон/<ул: идентификатор>/', views.join_hood, имя ='join_hood'),
]

еслинастройки.ОТЛАЖИВАТЬ:
URL-шаблоны += статический(настройки. MEDIA_URL, document_root = настройки. MEDIA_ROOT)

Импортировать путь из URL-адресов Django, чтобы создать пути для представления. Затем импортируйте функции представления из просмотры.py.

join_hood URL содержит заполнитель в угловых скобках:. Это фиксирует эту часть URL-адреса и отправляет ее в представление.

Угловые скобки обычно включают спецификацию преобразователя. Спецификация может быть строкой (str) или целым числом (int). Джанго также предлагает слизняк, путь, или универсальные уникальные идентификаторы (уид). Спецификация ограничивает тип переменной или количество символов, передаваемых в URL-адресе, для представления.

Присвоение URL-адресам имени поможет идентифицировать их в шаблонах.

статический и статические файлы импорт отображает статические файлы по URL-путям. Узнайте больше о том, как структурировать параметры URL в официальном Джанго документация.

4. Добавить URL в шаблон

После добавления функции просмотра к URL-адресу создайте шаблон HTML для отображения данных. Вы называете шаблон join_hood.html.

{% расширяется "base.html" %}

{% нагрузка статический %}

{% заблокировать содержимое %}
<раздел класс ="карта мб-3" стиль="max-width: подходит для содержимого;">
<раздел класс ="ряд г-0">
<раздел класс ="col-md-4">
<раздел класс ="col-md-8">
<раздел класс ="карточное тело">
<h5 класс="название карты"> Добро пожаловать!</h5>
<р класс ="карточка-текст pt-4"> Имя: {{neighbourhood.name}}</п>
<р класс ="карточка-текст pt-4"> Местоположение: {{neighbourhood.location}}</п>
<р класс ="карточка-текст pt-4"> Описание: {{neighbourhood.description}}</п>
<р класс ="карточка-текст pt-4"> Телефон службы здравоохранения: {{neighbourhood.health_tell}}</п>
<р класс ="карточка-текст pt-4"> Номер полиции: {{neighbourhood.police_number}}</п>
<р класс ="карточка-текст pt-4"> Жители: {{район. Считать}}</п>
</div>
</div>
</div>
</div>
</div>
{% конечный блок%}

Создайте join_hood шаблон в папке приложения для отображения данных о районе. Во-первых, продлить base.html шаблон с таблицами стилей (начальная загрузка), которые вы будете использовать для оформления шаблона. Затем отобразите переменные, которые будут отображать информацию на странице.

Далее создайте home.html шаблон, где вы будете отображать все окрестности.

{% расширяется 'base.html' %}

{% нагрузка статический %}

{% заблокировать содержимое %}
<раздел класс ="контейнер" стиль="черный цвет;">
<источник изображения ="{{neighborhood.hood_logo.url}}" класс="карта-img-топ" альт="{{user.neighborhood.name}}">

<раздел класс ="ряд">
{% для района в районах %}
<раздел класс ="col-md-4">
<раздел класс ="карта мб-4" стиль="минимальная высота: 340 пикселей">
<источник изображения ="{{neighborhood.hood_logo.url}}" класс="карта-img-топ" альт="{{user.hood.name}}">

<раздел класс ="карточное тело">
<h5 класс="название карты">
{{район.название}}
({{окрестности.location}})
<класс диапазона ="мл-4">{{район. Количество}} член{{neighborhood.members.count|множественное число}}</span>
</h5>

<р класс ="карточный текст">{{район.описание}}</п>
<р класс ="карточный текст">{{сосед.член. Считать}}</п>

<ссылка ="{% URL-адрес 'join_hood' окрестности.идентификатор %}" класс="бтн бтн-первичный бтн-см">Присоединяйтесь к Худу</ а>
</div>
</div>
</div>
</div>
</div>
{% конечный блок%}

На главной странице отобразите всю информацию о районах, которую вы хотите отобразить. Вы добавите кнопку и тег привязки на главную страницу. Тег привязки имеет URL имя и идентификатор района.

При нажатии кнопка перемещается в окрестности этого идентификатора. Домашний шаблон отображается по URL-адресу http://127.0.0.1:8000/home/. На картинке ниже показана эта страница:

5. Тестирование динамической маршрутизации

Теперь вы можете проверить, работает ли динамическая маршрутизация в шаблоне. Когда вы нажимаете на присоединиться к капюшону Кнопка, она переходит к join_hood шаблон. join_hood Шаблон отображает профильную информацию о выбранном районе.

Вы также увидите идентификатор района, отображаемый в URL-адресе браузера. http://127.0.0.1:8000/join_hood/2/

Он будет выглядеть так, как показано ниже:

Поздравляем! Вы создали динамический URL.

Зачем использовать URL-адреса Django?

Динамические URL-адреса — важная функция веб-приложений. Django позволяет легко создавать URL-адреса в соответствии с вашими потребностями. Он снимает ограничения, которые вы могли бы ассоциировать с другими фреймворками.

Модуль URLconf полон ресурсов, поддерживающих создание URL-адресов Django. Это также упрощает обслуживание статических файлов в шаблонах и улучшает обработку ошибок.

В Django есть и другие функции, предназначенные для оптимизации серверных приложений. Он автоматизирует аутентификацию пользователей, администрирование контента и карты сайта, а также другие функции.