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

Как веб-разработчик, оптимизация пользовательского интерфейса вашего веб-приложения имеет решающее значение. Чтобы улучшить взаимодействие с пользователем и видимость в поисковых системах, используйте удобные URL-адреса с слагами в Django. Создание URL-адресов с слагами так же просто, как написание функции, позволяющей создавать краткие и описательные URL-адреса, которые легко понять пользователям и поисковым системам. Это повышает удобство использования и доступность, одновременно повышая рейтинг в поисковых системах.

Примеры кода, используемые в этой статье, можно найти в этом Репозиторий GitHub.

Создание проекта Джанго

Django предоставляет несколько методов для создания слагов и их использования на вашем веб-сайте. Чтобы проиллюстрировать различные способы реализации слагов, этот учебник проведет вас через создание простого веб-приложения для блога.

Перед настройкой проекта Django,

создать и активировать виртуальную среду для установки необходимых зависимостей. После активации виртуальной среды выполните следующие действия, чтобы настроить проект:

  • Установите Django с помощью команды pip в командной строке:
пип установить джанго
  • Создайте проект с помощью Джанго-админ полезность. Этот учебник будет использовать проект_ядро как название проекта.
django-admin startproject project_core .
  • Создайте приложение с именем рецепты.
рецепты запуска python manage.py
  • Добавьте свое приложение в список установленных приложений в вашем проекте настройка.py файл.
УСТАНОВЛЕННЫЕ_ПРИЛОЖЕНИЯ = [
'...'
'рецепты',
]
  • Запустите приложение, введя следующую команду в инструменте командной строки:
сервер выполнения python manage.py
  • Перейдите к http://127.0.0.1:8000/ в вашем браузере. Вы должны увидеть эту страницу:
  • Настройте шаблон URL в вашем проекте urls.py файл
от django.urls Импортировать путь, включить

URL-шаблоны = [
'...',
путь('', включать('рецепты.urls'))
]

Создание слага в Django

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

Создать модель

В вашей модели.py файл, создайте новую модель и включите поле slug. Вот пример:

сортРецепт(модели. Модель):
имя = модели. CharField (max_length=225, пусто =ЛОЖЬ, ноль=ЛОЖЬ)
ингредиенты = модели. Текстовое поле (пусто=ЛОЖЬ, ноль=ЛОЖЬ)
инструкции = модели. Текстовое поле (пусто=ЛОЖЬ, ноль=ЛОЖЬ)
date_created = модели. DateTimeField (auto_now=Истинный)
слаг = модели. SlugField (нуль = Истинный, пусто =Истинный, уникальный =Истинный)

В приведенном выше примере модель Рецепт содержит поле с именем слизняк. слизняк поле имеет атрибуты, нулевой и пустой установлен в Истинный.

Примените миграции к своей модели

После создания модели вы должны запустить следующую команду в инструменте командной строки, чтобы создать таблицу в базе данных:

python manage.py makemigrations && python manage.py migrate

Приведенная выше команда сначала создаст файл миграции, а затем обновит базу данных, выполнив инструкции внутри файла миграции.

Добавьте данные в свою базу данных

Зарегистрируйте свою модель, введя следующее в admin.py файл:

от django.contrib Импортировать администратор
от .модели Импортировать Рецепт

admin.site.register (Рецепт)

Затем откройте инструмент командной строки и создайте суперпользователь для вашей панели администратора, выполнив эту команду:

python manage.py создает суперпользователя

Приведенная выше команда проведет вас через шаги, изображенные на этом изображении:

После создания суперпользователь, запустите локальный сервер с помощью следующей команды:

сервер выполнения python manage.py

Как только ваш сервер запустится, вы должны перейти к http://127.0.0.1:8000/admin/, войдите в систему с данными, которые вы использовали для создания суперпользовательи вручную добавить несколько рецептов в базу данных. Следует обратить внимание на поле slug.

Создавайте представления для своего приложения

Откройте свой просмотры.py файл и создайте два представления для вашего приложения. В первом представлении будет просто отображаться обзор ваших рецептов, а во втором — более подробная информация о каждом рецепте. Вы можете использовать эти представления в своем проекте:

от django.shortcuts Импортировать рендеринг, get_object_or_404
от .модели Импортировать Рецепт

# Список рецептов
дефrecipe_list(запрос):
рецепты = Recipe.objects.all()
возвращаться оказывать (запрос, 'рецепты/recipe_list.html', {"рецепты":рецепты})

# Детальный просмотр для каждого рецепта
дефrecipe_detail(запрос, recipe_slug):
recipe = get_object_or_404(Recipe, slug=recipe_slug)
возвращаться оказывать (запрос, 'рецепты/recipe_detail.html', {'рецепт': рецепт})

В приведенном выше фрагменте кода recipe_list view возвращает список всех рецептов в шаблон. С другой стороны, recipe_detail view возвращает один рецепт в шаблон. Это представление принимает дополнительный параметр, называемый recipe_slug который используется для получения слизняка для конкретного рецепта.

Настройка шаблонов URL для ваших представлений

В каталоге вашего приложения (или рецепт папку), создайте файл с именем urls.py чтобы добавить пути URL для вашего приложения. Вот пример:

от django.urls Импортировать путь
от .Просмотры Импортировать recipe_list, recipe_detail

URL-шаблоны = [
путь('', список_рецептов, имя='рецепт-дом'),
путь('рецепт//', recipe_detail, имя='рецепт_деталь'),
]

В приведенном выше фрагменте кода второй путь вводит слаг в URL-адрес страницы.

Создавайте шаблоны для своего приложения

Чтобы рецепты отображались в браузере, создайте шаблоны для своих представлений. Один шаблон должен быть для recipe_list вид, в то время как другой должен быть для recipe_detail вид. Чтобы использовать слаг в своем шаблоне, следуйте этому формату: {% url 'view_name' recipe.slug %}. Вот два примера, которые вы можете использовать в своем коде:

 рецепты/recipe_list.html 
{% расширяет 'base.html' %}

{% заблокировать содержимое %}
<h1сорт="мой-5 текстовый центр">Рецептыh1>
<центр>
<улсорт="список-группа w-75">
{% для рецепта в рецептах %}
<лисорт="элемент списка-группы мой-3">
<h2сорт="мб-3">
<аhref="{% url 'recipe_detail' recipe.slug %}">
{{ рецепт.название }}
а>
h2>
<псорт="в-50">
Ингредиенты: {{ recipe.ingredients }}
п>
<псорт="текст отключен">
Создано: {{ recipe.date_created }}
п>
ли>
{% пустой %}
<лисорт="элемент-группы-списка">Рецепты не найдены.ли>
{% конец для %}
ул>
центр>
{% конечный блок%}

Приведенный выше HTML-шаблон перечислит все рецепты в вашей базе данных и отобразит Рецепты не найдены если нет рецептов. Он использует классы Bootstrap для стилизации. Вы можете узнать, как использовать Bootstrap с Django. Приведенный выше шаблон должен выглядеть в браузере следующим образом:

 рецепты/recipe_detail.html 
{% расширяет 'base.html' %}

{% заблокировать содержимое %}
<центр>
<дивсорт="ш-75">
<h1сорт="МТ-5 МБ-4">{{ рецепт.название }}h1>
<h3>Ингредиентыh3>
<п>{{ рецепт.ингредиенты }}п>
<h3>инструкцииh3>
<п>{{ рецепт.инструкции }}п>
<псорт="текст отключен">Создано: {{ recipe.date_created }}п>
див>
центр>
{% конечный блок%}

Приведенный выше HTML-шаблон возвращает сведения о конкретном рецепте. В браузере вышеуказанная страница должна выглядеть так:

Вы заметите, что URL-адрес теперь содержит любой слаг, который вы добавили в свою базу данных для каждого рецепта. Если вы не понимаете, как работает система шаблонов, вам следует сначала изучить наследование шаблонов в Django и Архитектура Django MVT.

Автоматически генерировать слаг в Django

С слагами вам действительно нужно автоматически генерировать их на основе поля в вашей модели. Для этого необходимо изменить сохранять() метод в вашей модели и укажите свои собственные правила, прежде чем объекты будут сохранены в базе данных. Вот простой пример, который вы можете добавить в свой класс модели:

# импортировать slugify
от django.template.defaultfilters Импортировать слизняк

дефсохранять(я, *args, **kwargs):
еслинет селф.слаг:
self.slug = slugify (self.name)
супер (). сохранить (* аргументы, ** kwargs)

Приведенная выше функция сначала проверяет, существует ли слаг для объекта модели. Если слаг отсутствует, он использует слизняк функция для создания одного из поля имени в модели. После переопределения сохранять() метод, откройте панель администратора и добавьте несколько рецептов. На этот раз вам не нужно заполнять поле slug, потому что оно будет автоматически заполнено, как только вы сохраните свой рецепт.

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

Иногда у вас будет несколько рецептов с одним и тем же именем, и это вызовет ошибки в вашем слаге. Вы можете исправить это, добавив в слаг уникальный элемент, например дату создания. Вот простой пример:

self.slug = slugify (self.name + "-" + ул (self.date_created))

Используйте слаги для улучшения работы с URL

В отличие от старого доброго ПК, слаги обеспечивают множество преимуществ, включая гибкость и переносимость, поскольку они не привязаны к конкретным идентификаторам URL-адресов, таким как первичный ключ. Таким образом, если вы измените структуру базы данных или перенесете свои данные, вы все равно сможете поддерживать согласованные URL-адреса. Слаги также повышают удобство SEO.