Django

Blog

Для запуска сайта на Django необходимо, чтобы данный фреймворк был у вас установлен. Сделать это вы можете автоматически через панель управления в разделе «Каталог CMS», вкладка «Прочее» или вручную.

При ручной установке вы можете провести инсталляцию виртуального окружения virtualenv, после чего можно использовать pip для установки библиотек Python.

Виртуальное окружение virtualenv — это инструмент, позволяющий создавать изолированные среды для отдельных проектов Python, решая тем самым проблему зависимостей и совместимости приложений разных версий. Подробнее о виртуальном окружении Python можно прочитать в официальной документации.

Версии Django и Python

На наших серверах доступны две версии интерпретатора: Python 2 и Python 3 (версии 3.5, 3.6). 

Для работы Python3 используйте для сайта версию PHP 7.x. При выборе более старых версий PHP будет использоваться Python 2.7

Совместимость версий Django и Python:

Версия Django

Версии Python

1.11

2.7, 3.5, 3.6, 3.7 (в версии 1.11.17)

2.0

3.5, 3.6, 3.7

2.1

3.5, 3.6, 3.7

2.2

3.5, 3.6, 3.7, 3.8 (в версии 2.2.8)

3.0

3.6, 3.7, 3.8

Установка Django

Шаг 1: установка virtualenv

Установите и активируйте virtualenv по нашей инструкции.

Шаг 2: установка Django

2.1. Установите django с помощью pip:

pip install django

2.2. Перейдите в нужную директорию и создайте проект:

cd public_html/

2.3. Создайте проект:

django-admin startproject имя_проекта

2.4. Далее, чтобы развернуть проект, необходимо создать файл .htaccess в папке public_html сайта со следующим содержанием:  

Options +ExecCGI
AddHandler wsgi-script .py
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /wsgi.py/$1 [QSA,PT,L]

2.5. Там же нужно создать файл wsgi.py cо следующим содержанием:

Для django версий до 1.7:

import os
import sys

sys.path.remove('/usr/lib/python3/dist-packages')
sys.path.append('ПУТЬ_ДО_ПРОЕКТА')
sys.path.append('ПУТЬ_ДО_ПАКЕТОВ_PYTHON')
os.environ['DJANGO_SETTINGS_MODULE'] = 'имя_проекта.settings'

from django.core.handlers import wsgi
application = wsgi.WSGIHandler()

Для версий django 1.7 и выше:

import os
import sys

try:
  sys.path.remove('/usr/lib/python3/dist-packages')
except:
  pass

sys.path.append('ПУТЬ_ДО_ПРОЕКТА')
sys.path.append('ПУТЬ_ДО_ПАКЕТОВ_PYTHON')

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'имя_проекта.settings')

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

Например:

import os
import sys

try:
  sys.path.remove('/usr/lib/python3/dist-packages')
except:
  pass

sys.path.append('/home/c/cm99441/django/public_html/timewebtest/')
sys.path.append('/home/c/cm99441/django/venv/lib/python3.6/site-packages/')

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'timewebtest.settings')

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

ПУТЬ_ДО_ПРОЕКТА – это полный путь до папки с проектом Django. Обычно создается в той папке, в которой была введена команда: 

django-admin startproject имя_проекта

Пример полного пути:

/home/c/cs99441/public_html/timewebtest

Полный путь до вашего проекта можно узнать, введя в консоли:

cd ~/имя_сайта/public_html/имя_проекта
pwd

Если Django устанавливается на основной сайт, то команда будет:

cd ~/public_html/имя_проекта
pwd

ПУТЬ_ДО_ПАКЕТОВ_PYTHON – это полный путь до папки, которая содержит пакеты Python для виртуального окружения (virtualenv).

Если виртуальное окружение было создано по инструкции на шаге 1, то полный путь можно узнать, введя команду:

cd ~/venv/lib/python3.6/site-packages/
pwd

Где python3.6 – это версия python, выбранная при установке виртуального окружения.

2.6. Далее необходимо добавить список разрешенных хостов (доменов) для проекта Django в файле settings.py, который находится по пути:

~/имя_сайта/public_html/имя_проекта/имя_проекта/settings.py

Если Django установлен на основной сайт, то команда будет:

~/public_html/имя_проекта/имя_проекта/settings.py

В этом файле необходимо найти строку:

ALLOWED_HOSTS = []

И указать в ней используемый домен:

ALLOWED_HOSTS = ['ДОМЕН']

Если сайт будет использоваться на нескольких доменах, их тоже необходимо прописать:

ALLOWED_HOSTS = ['ДОМЕН1','ДОМЕН2','ДОМЕН3']

2.6. Также рекомендуется включить отладку проекта в том же файле settings.py (обычно включена по умолчанию), отредактировав строку с параметром DEBUG:

DEBUG = True

В результате при переходе по домену должна отобразиться приветственная страница:

Image1

Дополнительную информацию вы можете найти на официальном сайте проекта.

Отображение статических файлов

По умолчанию пути к статическим файлам в Django начинаются со /static/. Соответственно, для их корректного отображения необходимо, чтобы директория static находилась в корне сайта — в папке public_html.

Для решения данной задачи установите нужное значение константы STATIC_ROOT в файле settings.py вашего приложения.

Например, если сайт располагается в папке /home/u/user/имя_сайта/public_html/, то значение STATIC_ROOT должно быть следующим:

STATIC_ROOT = '/home/u/user/имя_сайта/public_html/static/'

Значения u и user необходимо заменить на первую букву вашего логина и сам логин.

После выполните активацию виртуального окружения и запустите команду:

python manage.py collectstatic

Django сгенерирует статические файлы и разместит их в папке, указанной в STATIC_ROOT.

Более подробную информацию можно получить в документации Django.

Также вы можете переместить имеющуюся папку static в директорию public_html. Это тоже позволит отобразить статические файлы.