Руководство по 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 . Заинтересованы в хакинге роста? Ознакомьтесь с разделом Схема.