Python создание приложения в проекте Django
В Django приложение есть совокупность моделей и адресов, которые можно использовать повторно. В сегодняшней статье мы рассмотрим процесс создания приложения в проекте описанном в предыдущей статье относящегося к данному фреймворку. Создадим в папке mysite новое приложение blog:
>>>python manage.py startapp blog
'''
вывод
blog/
__init__.py
admin.py
migrations/
__init__.py
models.py
tests.py
views.py
'''
Выше представлена структура вновь созданного приложения блога. Здесь приложение будет отвечать за конкретную функцию нашего веб проекта.
Логика Django заключается в создании отдельных слоев, которые при помощи внутренней логики фреймворка взаимодействуют между собой. Возьмем к примеру файл из нашего приложения models.py - отвечает за базу данных. Данный файл содержит строки для нашей базы данных. Нужно лишь создать класс и определить в нем поля:
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
class Post(models.Model):
# строковой тип данных
title = models.CharField(max_length=250)
# SEO - дружественный интернет адрес, включающий только латиницу буквы цифры и подчеркивания
slug = models.SlugField(max_length=250, unique_for_date='publish')
# поле класса ForeignKey, для создания связи с другой моделью User, параметр on_delete задает поведение вторичной таблицы в случае удаления первичной то есть User, models.CASCADE означает удаление вторичной таблицы
author = models.ForeignKey(User, on_delete=models.CASCADE,related_name='blog_posts')
# тип text в Sqlite
body = models.TextField()
# тип даты и времени, default- значение по умолчанию
publish = models.DateTimeField(default=timezone.now)
# прикаждом добавлении записи поле auto_now_add генерирует настоящее время и число
created = models.DateTimeField(auto_now_add=True)
# поле auto_now делает то же при записи и сохранении данных
updated = models.DateTimeField(auto_now=True)
# в параметр choices вносится заранее определенный кортеж STATUS_CHOICES, который может быть и списком.
status = models.CharField(max_length=10, choices=STATUS_CHOICES, default='draft')
class Meta:
# задает поле по которому будет выполняться сортировка данных модели, знак говорит о порядке сортировки-по убыванию
ordering = ('-publish',) .
def __str__(self):
return self.title
Вышеуказанный способ создания таблиц позволяет создавать модель таблиц и определять основные поля и свойства средствами основного языка, который мы используем, здесь это Python. Называется данная система ORM.
'''В настройках проекта в папке settings.py добавим поле blog. Таким образом мы активируем приложение blog для нашего проекта mysite.
'''
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
]
'''
Создадим файл миграции данных из кода python в sqlite, и применим ее для синхронизации модели и базы данных:'''
>>>python manage.py makemigrations blog
>>>python manage.py migrate
'''После применения миграции база данных отразит текущее состояние наших моделей. При редактировании файла models.py с целью добавления, удаления или изменения полей существующих моделей, а также при добавлении новых моделей, необходимо будет создать новую миграцию с помощью команды makemigrations. Миграция позволит Django отслеживать изменения модели. Затем необходимо применить его с помощью команды migrate, чтобы синхронизировать базы данных с моделями.
После определения модели Post для блога мы хотим добавить админку, уже включенную в настройки, для управления записями блога. Для этого создадим пользователя:
'''
>>>python manage.py createsuperuser
'''Заполним поля:
Username (leave blank to use 'admin'): admin
Email address: [email protected]
Password: ********
Password (again): ********
Superuser created successfully'''
>>>python manage.py runserver # запуск сервера разработки
''' В браузере запустим http://127.0.0.1:8000/admin/
Добавим модель блога на сайт администрирования, для чего в файле admin.py введем:'''
from django.contrib import admin
from .models import Post
admin.site.register(Post)
Таким образом мы создали каркас приложения блога в проекте на основе фреймворка Django используя в качестве языка программирования Python, создали таблицу данных блога в базе sqlite средствами Django ORM, а также зарегистрировали наше приложение в проекте, и подключили его к встроенному приложению администратора.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.