Разница между использованием slug_url_kwargs и pk_url_kwargs для get_object () - PullRequest
1 голос
/ 12 февраля 2020

Разница между использованием slug_url_kwargs и pk_url_kwargs для get_object (). Когда бы я использовал один поверх другого?

from django.urls import path
from books.views import AuthorDetailView

urlpatterns = [
    #...
    path('authors/<int:param>/', AuthorDetailView.as_view(), name='author-detail'),
]

Для приведенного выше примера было бы достаточно pk_url_kwargs = 'param'? Когда я буду использовать слизень?

1 Ответ

1 голос
/ 12 февраля 2020

Для приведенного выше примера будет достаточно pk_url_kwargs = 'param'?

Да . Он будет искать в вашей модели объект с первичным ключом pk, param в вашем URL.

Когда мне использовать слаг?

Django глоссарий описывает slug как:

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

Это то, что вы часто видите в URL системы управления контентом (CMS) , например:

https://www.djangoproject.com/weblog/2008/apr/12/<b>spring</b>/
https://www.myblog.com/<b>this-is-the-title-of-an-article</b>

Вы можете добавить SlugField [Django -док] или AutoSlugField [readthedocs.io] из django-autoslug пакет [GitHub] для хранения пули. Слаг обычно строится на основе содержимого поля (например, title для Book, name для Author, et c.).

* DetailView [Django -doc] затем отфильтрует поле, указанное атрибутом slug_field [Django -doc] в содержании в URL, указанном атрибутом slug_url_kwarg [Django -doc] . Оба имеют по умолчанию 'slug'. Таким образом, вы можете указать в своем URL что-то вроде:

path('authors/<b><slug:slug></b>/', AuthorDetailView.as_view(), name='author-detail'),

Конечно, учитывая вашу модель (Author имеет какое-то поле слагов).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...