Menu
CoddyTech

Страницы по слагу

Часть раздела Представления на основе классов путешествия по Django на Coddy. Урок 6 из 18.

/jobs/7/ ничего не говорит о вакансии. /jobs/python-developer-brightline/ сообщает, что это за вакансия, людям и поисковым системам. Эта читаемая часть называется слагом: слова в нижнем регистре, соединённые дефисами. У каждого Job он уже есть в поле slug.

Когда аргумент URL называется slug, DetailView находит строку, у которой поле slug совпадает с ним. Оба имени можно изменить. Маршрут сайта с рецептами "recipes/<slug:recipe_slug>/" сообщает представлению:

class RecipeDetailView(DetailView):
    model = Recipe
    slug_url_kwarg = "recipe_slug"

slug_url_kwarg задаёт имя аргумента URL, а slug_field — имя поля модели; по умолчанию оба имеют значение "slug". Переименуйте аргумент URL, не сообщив об этом представлению, и оно не найдёт ни pk, ни слаг и завершится с ошибкой.

challenge icon

Задание

Легко

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

  • В jobs/urls.py маршрут detail принимает слаг вакансии вместо её первичного ключа.
  • В job_list.html каждая ссылка передаёт слаг вакансии.

Нажмите «Запустить», затем выберите Python Developer на /jobs/: адрес будет /jobs/python-developer-brightline/.

Попробуйте сами

from django.urls import path

from . import views

app_name = "jobs"

urlpatterns = [
    path("", views.HomeView.as_view(), name="home"),
    path("about/", views.AboutView.as_view(), name="about"),
    path("jobs/", views.JobListView.as_view(), name="list"),
    path("jobs/<int:pk>/", views.JobDetailView.as_view(), name="detail"),
]

Все уроки раздела Представления на основе классов

Потренируйтесь самостоятельно: Песочница Django