Архив метки: Django

Django. Панель администрирования (часть 7)

И так у нас есть Модель и Таблица, которая связана с этой моделью, теперь нужно заполнить эту таблицу данными для этого в Django есть встроенная админка, которую можно настроить в файле admin.py

Сначала импортируем модель House

from .models import House
либо
from houses.models import House

И свяжем админку с моделью с помощью декоратора
@admin.register(House)

Создадим класс AdminHouse, который наследуется от admin.ModelAdmin, в нем мы будем конфигурировать отображение нашей панели

class AdminHouse(admin.ModelAdmin):

      pass

Full code:
from django.contrib import admin
from .models import House

@admin.register(House)
class AdminHouse(admin.ModelAdmin):
      pass

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

CTRL+ALT+R

createsuperuser
или
(pyvenv) vlad@vs:~/pyvenv/sites/blog$ python manage.py createsuperuser

Теперь введем:

  • Имя: admin
  • Email: xxx@mail.ru
  • Pass: admin12345 (повторить 2 раза, не менее 8 символов)

Запускаем сервер:

  • (pyvenv) vlad@vs:~/pyvenv/sites/blog$ python manage.py runserver
  • Переходим: http://127.0.0.1:8000/admin
  • Если забыл пароль, то можно создать нового юзера
  • (pyvenv) vlad@vs:~/pyvenv/sites/blog$ python manage.py createsuperuser

В админке мы видим два приложения “HOUSES” и “Пользователи и Группы


Нажмем на Пользователи и выберем admin, добавим имя и фамилию

Нажмем сохранить.

Данные сохранились.


И так, сейчас наше приложение HOUSES на англ. языке, исправим.

Откроем файл apps.py в нутри папки houses, добавим внутри класса HousesConfig поле verbose_name со значением “дома

Python2
Если возникает ошибка:
SyntaxError: Non-ASCII character
(no encoding declared; see http://www.python.org/peps/pep-0263.html)

то нужно добавить строчку:
# -*- coding: utf-8 -*-

class HousesConfig(AppConfig):
      name = 'houses'
      verbose_name = «дома»

А затем в файле __init__.py, той же папки создадим переменную
default_app_config = “houses.apps.HousesConfig”

Перезапускаем сервер. Все получилось.

Осталось только переименовать модель, для этого откроем файл models.py и внутри класса House, создадим класс Meta содержащий два параметра:

verbose_name = “дом”
verbose_name_plural = “дома”

Full code:
class House(models.Model):
      house_name = models.CharField(«Название», max_length=200, default=»»)
      house_price = models.IntegerField(«Цена», default=0)
      house_description = models.TextField(«Описание», default=»»)

class Meta:
      verbose_name = «Дом»
      verbose_name_plural = «Дома»

Класс Meta() — содержит мета-информацию, то есть описательную информацию о модели, в нашем случае ее имя в единственном и мн. числе.

Также в нем можно задать имя таблицы:

db_table = «article»

Класс Meta() — включает в себя дополнительные свойства для нашей будущей таблицы. Мы не хотим, чтобы Django самостоятельно давал название нашей таблицы, по-этому мы описываем это в классе Meta.

Так как мы изменили модель, то выполним команду:

CTRL+ALT+R
makemigrations houses
migrate houses

или создадим инструкцию
(pyvenv) vlad@vs:~/pyvenv/sites/blog$ python manage.py makemigrations houses
Далее с помощью инструкции заполним нашу базу данных:
(pyvenv) vlad@vs:~/pyvenv/sites/blog$ python manage.py migrate houses

Обновим страницу

И приложение и модель теперь на русском языке

Автор: Vladimir Semenovich

Django. База данных и модели ( часть 6)

Реляционные базы данных

Django прекрасно работает и с MySQL, PostgreSQL, SQLite, Oracle — все это реляционные базы данных.

Реляционные — это значит relational, relation — отношения, в нашем случае отношения между таблицами в нашем случае.

В прошлом уроке мы создали простое Django приложение “houses” и подключили его к проекту. А сейчас начнем его настраивать и начнем с файла models.py, в котором мы определим структуру данных приложения.

models.py — отвечает за описание нашей будущей базы данных

Внутри его, создаем класс House унаследованный от models.Model

В терминах Django класс House называется моделью и модель House отвечает за конкретный дом, который мы будем продавать клиенту.

Начинаем заполнять нашу таблицу. Таблицы в ORM оформляются в виде классов.

class House(models.Model):
      pass

Наши дома имеют определенные характеристики вроде:

  • Цены
  • Площади
  • Материала изготовления

Эти характеристики задаются внутри модели и называются полями модели
(переменные — колонки базы данных)

Создадим заголовок, первую колонку
name = models.CharField(«название», max_length=200)
# CharField — подразумевает собой набор символов
# max_length=200 — максимальная длина символов в строке

Создадим еще одно поле price, во вторую колонку
price = models.IntegerField(«цена»)
# IntegerField — может принимать и хранить целые числа
# “цена” — русское название поля price

Добавим еще одно поле description типа TextField в третью колонку
# TextField — в отличии от CharField, может хранить тексты произвольной длинны (для больших массивов текстовой информации) и его не нужно ограничивать параметром max_lenght
descriptions = models.TextField(“описание”)

Дополнительно
# models.DateTimeField — используется для хранения даты публикации статьи, это формат хранения как времени так и даты
# models.DateField — хранит только дату
# models.IntegerField — хранит цифровые целочисленные значения

class Meta — включает в себя дополнительные свойства для нашей будущей таблицы.

Нас интересует название таблицы, мы не хотим, чтобы Django самостоятельно давал название нашей таблицы, по-этому мы описываем это в классе Meta. Его нужно поместить во внутрь класса House (sites -> dom_u_morya -> houses)

файл models.py

сlass House(models.Model):
      class Meta():
            db_table = «new_houses»

Более современные требования требует дополнительных параметров

class House(models.Model):
      house_name = models.CharField(«Название», max_length=200, default=«»)
      house_price = models.IntegerField(«Цена», default=0)
      house_description = models.TextField(«Описание», default=«»)

И так в нашей модели House есть три поля, которые описывают его структуру


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

Django. Подготовка среды разработки (часть 4)

Как активировать virtualenv в PyCharm?

Ссылка на статью от Jetbrains

Переходим по следующему пути:

File -> Settings -> Project Dom_u_morja -> Project Interpreter

  • Нажимаем на эту маленькую шестеренку cogwheel_framed возле поля проекта и выбираем опцию More…
  • Нажимаем на “+” затем Add Local и выбираем нужный интерпретатор

Проверяем заработал ли интерпретатор. Нажимаем кнопку Run, если не заработало, то нажимаем Run/Debug Configurations и делаем настройку следующим образом как на рисунке.

Pycharm Professional — как открыть базу данных SQLite?

Переходим по следующему пути:

View -> Tool Windows -> Database

Автор: Vladimir Semenovich

Django. Создание первого приложения (часть 5)

Мы создали минимальный проект Django, теперь давайте посмотрим на его структуру.

Сама папка dom_u_morja в которой находится наш проект это всего лишь контейнер, она не на что не влияет и мы можем смело ее переименовать.

manage.py — это python скрипт для управления нашим проектом. Мы уже использовали его когда:

1)запускали тестовый сервер из консоли:
python manage.py runserver

2)применяли первые миграции:
python manage.py migrate

Внутренняя папка dom_u_morja — это python пакет для нашего проекта, в ней мы видим несколько файлов:

__init.py__ — сообщает python, что каталог dom_u_morja нужно рассматривать как пакет, а не просто папку

settings.py — отвечает за настройки сайта

urls.py — мы можем задавать url пути проекта

wsgi.py — это специальный файл для web серверов, которые будут запускать сайт

И так у нас есть основа и ее нужно расширять

Django-сайт состоит из приложений (applications), каждое из которых выполняет какую-то работу. Это один из принципов DRY.
DRY — don't repeat yourself

Приложения:

  • Каталог продукции
  • Форум
  • Блог

Откроем settings.py и пролистаем вниз до списка:

INSTALLED_APPS = [
          ‘django.contrib.admin’, — отвечает за панель администрирования
          ‘django.contrib.auth’, — отвечает за авторизацию на сайте
]

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

Нажмем: CTRL+ALT+R, откроется консоль для взаимодействия с Django,

введем startapp houses, нажмем Enter, приложение создано.
(ссылка на Running Tasks of manage.py Utility

или в терминале запускаем команду: python manage.py startapp [app_label]

Если приложение не видно в проекте, то нажмем правой кнопкой на корневой папке проекта и выберем Synchronize dom_u_morja, чтобы обновить данные

Каталог houses появился. Раскроем его, это тоже python пакет со своей структурой данных


Теперь подключаем приложение к проекту, для этого достаточно добавить houses в список INSTALLED_APPS


Готово, приложение подключено.

Автор: Vladimir Semenovich

Django. Python, установка PIP и настройка Virtual Environment (часть 1)

В течение нескольких статей, я хотел бы поделиться своими знаниями в разработке сайтов на Django.

Системы управления пакетами:
cуществуют две основные системы pip и easy_install. Вам нужно решить, какую систему управления пакетами вы будете использовать.


Установка easy_install
$ sudo apt-get install python-setuptools
Эта команда установит easy_install

Установка VIRTUALENV (виртуального окружения) в систему
$ sudo easy_install virtualenv

Далее переходим в каталог, где мы хотим создать виртуальное окружение.
Создаем виртуальное окружение c опцией —no-site-packages, это означает не использовать системные библиотеки Python
pyvenv — название нашей папки
$ virtualenv —no-site-packages pyvenv
$ cd pyvenv

Активируем виртуальное окружение. Команда source переводит контекст пользователя из системного окружения в виртуальное окружение
$ source bin/activate

После предыдущей команды появится имя нашей папки в круглых скобках (pyvenv)vlad@vs:/media/vlad/android/pyvenv$
(pyvenv) — это название нашего виртуального окружения и это означает, что оно активировано и все пакеты будут устанавливаться именно сюда.

Для того, что-бы выйти из окружения нужно выполнить
$ deactivate

Установка pip
Для установки pip, нужно скачать и запустить файл get-pip.py
$ cd /tmp/
$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python ./get-pip.py

Если setuptools и wheel еще не установлены, то get-pip.py установит их для вас.
Также про процесс установки почитать можно тут -> https://pip.pypa.io/en/stable/installing/

Установка VIRTUALENV (виртуального окружения) в систему
$ sudo pip install virtualenv

Обновим следующие пакеты
$ sudo pip install —upgrade pip virtualenv
Или
$ sudo pip install -U pip virtualenv

Далее переходим в каталог, где мы хотим создать виртуальное окружение.
Создаем виртуальное окружение с опцией —no-site-packages, это означает не использовать системные библиотеки Python

$ virtualenv -help
—no-site-packages DEPRECATED. Retained only for backward compatibility.
Not having access to global site-packages is now the
default behavior.

pyvenv — название нашей папки
$ virtualenv —no-site-packages pyvenv
$ cd pyvenv

Активируем виртуальное окружение. Команда source переводит контекст пользователя из системного окружения в виртуальное окружение
$ source bin/activate

После предыдущей команды появится имя нашей папки в круглых скобках (pyvenv)vlad@vs:/media/vlad/android/pyvenv$
(pyvenv) — это название нашего виртуального окружения и это означает, что оно активировано и все пакеты будут устанавливаться именно сюда.

Для того, что-бы выйти из окружения нужно выполнить
$ deactivate

Python3
Установка VIRTUALENV (виртуального окружения используя python3)
$ virtualenv -p python3 pyvenv3

Если у вас при создании будет ошибка то попробуйте обновить virtualenv:
$ pip install —upgrade virtualenv

Автор: Vladimir Semenovich

Django. Настройка поддержки Django проектов в Pycharm Professional (часть 3)

Django (часть 1). Python, установка PIP и настройка Virtual Environment
Установка Django (часть 2), создание первого проекта

Pycharm Professional

Нажимаем create new project => выбираем Django => далее в Location выбираем папку с нашим проектом (sites -> dom_u_morja)

Нажимаем Create -> yes

Если в панели управления не горит зеленым запуск сервера, то идем в настройки.

File -> Settings -> Languages & Frameworks -> Django -> Enable Django Support

 

Пункт 3. Выбираем папку проекта

 

Пункт 4. Выбираем файл с настройками settings.py

 

Жмем OK -> OK

Панель запуска сервера стала активной. Нажимаем зеленый треугольник и Web сервер запустился

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

Автор: Vladimir Semenovich