ZANIN блог
Контакты
Крути вниз
Фильтр по:
Категории
//Post title

Разработка сайта на Django - урок 03

29 Фев 2020Категория : Django

Разработка сайта на Django - урок 03

В предыдущем уроке мы провели миграцию для создания модели слайдера. Сейчас мы продолжим, но нам надо перейти с SQLite на PostgreSQL.

Для работы Django с PostgreSQL надо установить psycopg2

 

Создание страницы в Django - 001

Далее, так как часть наших данных уже есть в SQLite, то надо сделать копию этих данных, для переноса в базу данных PostgreSQL.

python manage.py dumpdata > db.json

Этой командой мы создаем файл db.json

Создание страницы в Django - 002

После этого нам надо настроить подключение к базе данных PostgreSQL в файле settings.py.

Создание страницы в Django - 003

Потом производим следующие команды:

python manage.py migrate

python manage.py loaddata db.json

Создание страницы в Django - 004

Можете проверить работоспособность после этого, все работает. Теперь идем дальше.

В прошлый раз мы закончили с созданием модели слайдера в файле models.py. По сути модель Slider представляет собой таблицу, с полями: name, title, description, slideimg, которые представляют собой поля в таблице. Это можно посмотреть 2-мя способами.

1 способ - это зайти в саму базу PostgreSQL

Создание страницы в Django - 005

 

2 способ - это подключить PyCharm к базе. Подключение осуществляется следующим образом

Создание страницы в Django - 006

Открывается окно

Создание страницы в Django - 007

Проверяем соединение

Создание страницы в Django - 008

После этого таблицы можно просматривать в PyCharm

Создание страницы в Django - 009

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

Расширим нашу модель слайдера валидацией полей, этот момент не сильно много разбирается в других статьях, но просто приведу пример использования, чаще всего именно его не хватает.

from django.db import models
from django.core.validators import MaxLengthValidator

class Slider(models.Model):
         name = models.CharField(max_length=100,
                                                    validators=[MaxLengthValidator(100)],
                                                    error_messages={'max_length': 'Очень большая длина'},
                                                    help_text='просто название слайда до 100 символов, оно обязательно',
                                                    verbose_name='Название слайда')
         title = models.CharField(blank=True,
                                                max_length=150,
                                                validators=[MaxLengthValidator(150)],
                                                error_messages={'max_length': 'Очень большая длина'},
                                                help_text='до 150 символов, заполнять необязательно',
                                                verbose_name='Заголовок на слайде')
        description = models.CharField(blank=True,
                                                           max_length=150,
                                                           validators=[MaxLengthValidator(150)],
                                                           error_messages={'max_length': 'Очень большая длина'},
                                                           help_text='до 150 символов, заполнять необязательно',
                                                           verbose_name='Текст под заголовком')
       slideimg = models.ImageField(blank=False,
                                                        upload_to='slider/',
                                                        help_text='изображение обрежется до 1920x1024px',
                                                        verbose_name='Добавить изображение')

       class Meta:
            verbose_name = 'Блок 1.0: Слайдер'
            verbose_name_plural = 'Блок 1.0: Слайдеры'

      def __str__(self):
           return self.name

Разберу некоторые важные моменты по параметрам модели:

  • blank=True - означает, что данное поле можно не заполнять
  • null=True - как описывается в документации, то такое поле может хранить в базе значение null. На практике этот параметр очень удобно использовать в следующей ситуации: вы создали модель с полями и заполнили их данными, а через какое-то время понадобилось добавить новое поле. И вот если не поставить null=True, то при создании миграции выскочит сообщение о том, что необходимо это поле заполнить значениями. А параметр null=True автоматически при миграции заполнит эти поля, хотя возможно у вас особые требования и там можно поставить значения по умолчанию.
  • help_text - этот параметр мало где используют в статьях, но если заботиться о том, как будет работать с админкой ваш клиент, то стоит писать дополнительные сведения для удобства.

  • 687

Готовы заказать проект?

© ZANIN 2019 / All rights reserved.
Контакты
Close