Руководство по Django SlugField

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

Настройка проекта

Что ж, начнем с создания каталога, желательно в каталоге вашего рабочего стола, и создайте виртуальную среду:

mkdir my_projects
cd my_projects
python -m venv my_env

Активируйте виртуальную среду:

source my_env/bin/activate

Создайте новый проект Django с именем django_slug:

django-admin startproject django_slug .

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

cd django_slug
python manage.py startapp blog

Теперь каталог вашего проекта должен выглядеть так:

Добавьте приложение блога в список INSTALLED_APPS в файле settings.py.

INSTALLED_APPS = [
.....
'blog.apps.BlogAppConfig' #add this
]

Запустите сервер разработки, чтобы убедиться, что все работает должным образом.

python manage.py runserver

Вы должны увидеть следующее на своем терминале:

Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
September 29, 2022 - 05:24:23
Django version 4.1, using settings 'django_slug.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Как видно из выходных данных сервера разработки, у нас есть непримененные миграции для admin, auth, contenttypes и session. Это все приложения, упакованные в Django.

Сервер разработки работает по адресу http://127.0.0.1:8000/; если вы введете URL-адрес в своем браузере, вы должны увидеть что-то вроде этого, что показывает, что установка прошла успешно.

Настройки базы данных для SQlite уже настроены в Django в файле the settings.py file следующим образом:

Поскольку мы создаем приложение для блога, нам нужно представить атрибуты статьи, такие как заголовок, описание, автор, дата_создания в базе данных. Для этого мы добавим новый класс модели в файл models.py приложения блога.
В настоящее время файл models.py выглядит так:

#blog/models.py
from django.db import models
# Create your models here.

Теперь давайте добавим класс модели Entry со следующими атрибутами:

  • заголовок
  • содержание
  • автор
  • Дата создания
  • слизняк

Откройте models.py и добавьте следующий код.

Как вы можете видеть выше, в дополнение к обычным типам полей, таким как CharField, TextField, ForeignKey и т. д., Django имеет SlugField, который хранит короткое строковое представление чего-то вроде заголовка в нашем случае.
Мы также предоставляем __str__ метод, который дает нашим записям в статьях удобочитаемое описание.

Теперь мы закончили с моделями.

Миграции

Миграции описывают, как создаются таблицы базы данных. Запустите команды миграции для приложения блога.

python manage.py makemigrations blog
Migrations for 'blog':
  blog/migrations/0001_initial.py
    - Create model Article

Затем запустите команду миграции:

python manage.py migrate

Когда вы запустите приведенную выше команду migrate, Django создаст таблицы базы данных для приложения блога и управления пользователями, поскольку Django уже настроен с полной системой управления пользователями. Файл db.sqlite3 также будет создан в корневом каталоге.

Если вы хотите просмотреть содержимое файла, введите команду dbshell

python manage.py dbshell

Вы должны увидеть что-то вроде этого:

SQLite version 3.38.2 2022-03-26 13:51:10
Enter ".help" for usage hints.

Просмотр таблиц базы данных

sqlite> .tables

это результат

auth_group                  blog_article              
auth_group_permissions      django_admin_log          
auth_permission             django_content_type       
auth_user                   django_migrations         
auth_user_groups            django_session            
auth_user_user_permissions

Сайт администратора Джанго

Django также поставляется с административным сайтом django, который предоставляет отличный интерфейс для управления пользователями и способ добавления данных модели и взаимодействия с ними.
Во-первых, давайте начнем с создания суперпользователя. Суперпользователь — это пользователь с правами администратора

python manage.py createsuperuser

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

python manage.py createsuperuser
Username (leave blank to use 'vaati'):    
Email address: 
Password: 
Password (again): 
This password is too short. It must contain at least 8 characters.
This password is too common.
This password is entirely numeric.
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.

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

python manage.py runserver

Теперь перейдите к http://127.0.0.1:8000/admin/ и используйте данные суперпользователя и войдите на сайт администратора.

Как вы можете видеть выше, у нас есть способ добавления новых пользователей, но мы не можем добавлять статьи. Чтобы изменить это, перейдите к blog/admin.py и зарегистрируйте модель статьи, чтобы она отображалась на сайте администратора.

from django.contrib import admin
from .models import Article
# Register your models here.
admin.site.register(Article)

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

Теперь нам нужно добавить представление, которое отображает все статьи на одной странице. Для этого мы будем использовать общие классы. Прежде всего, откройте views.py и начните с импорта класса ListView и класса модели статьи, как показано ниже.

from django.shortcuts import render
from django.views.generic import ListView
from .models import Article

ListView — это тип универсального класса отображения, который возвращает страницу списка объектов.

Затем создайте представление для модели статьи.

class ArticleListView(ListView):
    model = Article
    template_name = 'blog/article_list.html'

Список объектов содержится в object_list, затем вы можете продолжить и использовать его для запроса атрибутов объекта списка, таких как заголовок, контент, автор и т. д., в шаблоне.

Создайте шаблон article_list.html в каталоге блога. Шаблон по умолчанию должен находиться в каталоге шаблонов внутри папки, которая соответствует имени приложения.

blog/
   templates/ 
         blog/ 
            -article_list.html

Откройте article_list.html и добавьте следующий код.

Давайте реализуем представление, которое отображает один объект статьи, используя класс DetailView.

Обновите код в views.py

Отдельный объект статьи содержится в self.object. Создайте шаблон article_detail.html и добавьте следующий код.

Сопоставьте представления с путями URL-адресов в корневом файле urls.py.

Наконец, добавьте абсолютный URL-адрес в класс модели.

Теперь каждая статья использует слаг, как показано ниже.

Заключение

В этом руководстве рассказывается, как использовать SlugField в ваших приложениях Django. Вас также могут заинтересовать:



Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord . Заинтересованы в хакинге роста? Ознакомьтесь с разделом Схема.