Суббота, 20.04.2024, 12:26

Компьютерная помощь

Записки системного администратора

Меню сайта
Категории раздела
Компьютер [36]
Общекомпьютерные темы
Windows server [18]
Статьи по версиям windows для серверов.
Windows [30]
Статьи по версиям windows для рабочих станций.
Unix [65]
Статьи на тему unix-подобных систем. Linux, FreeBSD и т.п.
Видеомонтаж [10]
Статьи по нелинейному видеомонтажу
Программирование [9]
Заметки по программированию
Databases [10]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Вход на сайт

Поиск

Главная » Статьи » Программирование

Python. Django. Заметки по настройке.

[Обновляется]

Заметки по настройке и работе с фреймворком Django 1.11 и Python 3.52.

Простые примеры по работе с Python3.

https://youtu.be/UjMOev2NTg4?list=PL6Fp8QPl6sOi0FXf1XNjt4bNDBJ0wGdGF

Краткое описание видеоурока

Конструктор класса __init__ и его применение.

class Man:
    def __init__(self):
        self.__a= None
        self.__b=None
    def set_b(self,b):
        self.__b=b
    def set_a(self,a):
        self.__a=a
    def __str__(self):
        return str(self.__a)
m=Man()
m.set_a(25)
print(m)

наследование классов и переопределение функций с помощью super():

class Woman(Man):
    def __init__(self):
        super()
        self.__lang=None

    def set_lang(self, l):
        self.__lang=l

    def __str__(self):
        return super().__str__()+' '+self.__lang

w=Woman()
w.set_a(33)
w.set_b(55)
w.set_lang('Python')
print(w)

 

 

Настройка и работа с базами данных.

https://youtu.be/-D6hVchRamk?list=PL6Fp8QPl6sOi0FXf1XNjt4bNDBJ0wGdGF

Краткое описание видеоурока.

Создание базы данных в файле models.py.

Работа с базой данных из командной строки.

from blog.models import Post - из файла моделей импортируем наш класс с  постами

posts=Post.objects.all() - в переменную posts заносим все посты из базы данных при помощи метода objects.all()

С помощью цикла можем отобразить все нужные поля элементов. Например поле ID всех элементов:

for post in posts:
     print(post.id)

posts=Post.objects.get(id=1) - в методе objects.all() можем применять аргумент id=1, тогда в переменной posts окажется только пост с id 1. Аналогично работает метод filter.

posts=Post.objects.filter(id="2")
 

Можем вывести посты из нашей переменной posts командой print (posts) 

Можем создать пост через конструктор класса Django:

newpost=Post(title="Post number n", text="Text post number n"), а затем сохранить его с помощью метода save():

newpost.save()
 

Создание новых постов. Просмотр постов через команду из командной строки. Удаление постов через командную строку.
Представление постов через шаблонизатор Djinja посредством переменных на странице html. Настройка urls.py для отображения имеющихся в базе данных постов с параметром запроса в адресной строке браузера.

Генератор постов (данных из модели Django) в виде списка.

Пример: [post.title for post in Post.objects.all()]

Реверсирование постов (самый новый пост сверху). Иконки для сайтов с популярного ресурса fontawesome.io/icons/.

 


Использование bootstrap3 в Django

http://django-bootstrap3.readthedocs.io/en/latest/quickstart.html

Установить bootstrap3 командой

pip django-bootstrap3

В файле представлений views.py импортируем установленный пакет bootstrap3 записью:

import bootstrap3

В настройках проекта в файле settings.py добавляем запись в поле INSTALLED_APPS=[

'bootstrap3',

]

В html файле, в который рендерится представление, должна быть запись типа такого:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    {% load bootstrap3 %}  #Грузим библиотеку bootstrap3
    {% bootstrap_messages %}   #Отображаем возможные ошибки bootstrap3 в среде разработки

    {% bootstrap_css %}  #Грузим библиотеку css
    {% bootstrap_javascript %}  #Грузим библиотеку javascript
</head>
<body>

<button type="submit" class="btn btn-primary">   #Наша кнопка отображаемая в стиле btn btn-primary bootstrap3
    {% bootstrap_icon "star" %} Submit
</button>

</body>
</html>

второй вариант с двумя кнопками и без комментариев для ctrl-c, ctrl-v

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    {% load bootstrap3 %}
    {% bootstrap_css %}
    {% bootstrap_javascript %}
    {% bootstrap_messages %}
</head>
<body>

{% buttons %}
   <button type="submit" class="btn btn-primary">
     {% bootstrap_icon "star" %} Submit
   </button>
    <button type="button" class="btn btn-outline-secondary">Secondary</button>
{% endbuttons %}

</body>
</html>

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


Сброс забытого пароля админа Django

Восстановление забытого пароля Django.  В шелле (python manage.py shell) выполняем следующие команды:

from django.contrib.auth.models import User
user = User.objects.get(username='admin')
user.set_password('mynewpassword')
user.save()

Перенос базы данных в проекте

Если необходимо перенести БД со старой на новую, к примеру с SqlLite на MySQL, это можно сделать с помощью следующих команд через файл JSON:

     1. Выполняется со старыми настройками DATABASES в settings.py

        python manage.py dumpdata > datadump.json

      2. Выполняется с новыми настройками DATABASES в settings.py

        python manage.py loaddata datadump.json

 

Доступ к проекту Django по сети


По умолчанию проект Django запускается командой
python manage.py runserver
и виден с локального хоста на порту 8000, то есть видимость по умолчанию Django предлагает по адресу 127.0.0.1:8000
Для вывода проект в продакшн (деплоить проект), нужно установить сервер wsgi.
Вместе с тем есть возможность увидеть проект по сети с помощью сервера Django для разработки без установки wsgi или других веб серверов (не рекомендуется для продакшена).

Для этого правим файл settings.py проекта и добавляем запись:
 
ALLOWED_HOSTS = [
'10.10.12.1'
]

10.10.12.1 - адрес хоста с проектом Django

Затем запускаем команду

python manage.py runserver 0.0.0.0:8000 или
python manage.py runserver 0.0.0.0:80 (номер порта не важен)

можно просто

python manage.py runserver 0:80

Далее наш сервер Django будет доступен из любого хоста в видимой сети по адресу

http://10.10.12.1:8000

 

Хранение шаблонов в другой папке. В файле settings.py изменяем настройки TEMPLATES а именно параметр DIRS. По умолчанию он

'DIRS': [],

пустой. Добавляем 

'DIRS': [os.path.join(BASE_DIR, 'templates')],

теперь наши шаблоны хранятся в корневой папке проекта в папке templates.

Поле с возможностью выбора в админке

from django.db import models

CHOISES = (
 (u'Копирайтинг', 'Копирайтинг'),
 (u'Рерайтинг', 'Рерайтинг'),
 (u'SEO-копирайтинг', 'SEO-копирайтинг'),
 (u'SEO-рерайтинг','SEO-рерайтинг'),
)

class Works(models.Model):
 ...
 choises = models.CharField("Выбор", max_length=16, 
 choices=CHOISES, default="Копирайтинг")

Не подхватывается изображение в Django (загруженное при помощи поля ImageFileld в модели проекта)

runserver по дефолту раздает static, но не раздает media.

Можно в urls.py добавить следующий код:

from settings import DEBUG, MEDIA_URL, MEDIA_ROOT
if DEBUG:
 urlpatterns += static(MEDIA_URL, document_root=MEDIA_ROOT)
 urlpatterns += staticfiles_urlpatterns()

Еще один вариант решения это установить wsgi-middleware dj-static через менеджер пакетов pip:

pip install dj-static

Чтобы подключить статику, нужно дописать в wsgi.py проекта

from django.core.wsgi import get_wsgi_application
from dj_static import Cling, MediaCling

application = Cling(MediaCling(get_wsgi_application()))

 

Деплой сайта Django в продакшн (web server Nginx).

Если не отображаются стили в django admin в админке Django (1.11)

Для начала нужно выполнить команду

python manage.py collectstatic


В настройках nginx (/etc/nginx/sites-available/default) изменить строки:


        location /static/ {
            root /home/user/myprojectenv/myproject/static;
            expires 30d;
        }


/home/user/myprojectenv/myproject/static  - путь который выдает при команде
python manage.py collectstatic

Категория: Программирование | Добавил: admin (10.05.2017)
Просмотров: 1076 | Комментарии: 2 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: