Вопросы и ответы

Python и Django

Вопросы, связанные с работой языка Python (через расширения mod_wsgi и mod_python) и фреймворка Django.

Свернуть все Развернуть все

  • Как начать проект на Django?

    Прежде всего убедитесь, что у вас подключена услуга «Поддержка Python + Django». На время разработки вам также часто будет нужен доступ по SSH, поэтому перед созданием нового Django-проекта подключите и услугу «Поддержка SSH». Если в качестве базы данных вы будете использовать MySQL, соответствующая услуга также должна быть подключена.

    1. Подключитесь к серверу по SSH и создайте и активируйте виртуальное окружение Python (если вы создаете не первый проект и в качестве виртуального окружения хотите использовать уже существующее, пропустите этот и следующие два шага). Введите команды:

      virtualenv-2.7 virtualenv/MyEnv
      . virtualenv/MyEnv/bin/activate

      В результате будет создана папка virtualenv/MyEnv. Вместо MyEnv вы можете выбрать и любое другое имя виртуального окружения.

    2. В рамках виртуального окружения установите свежую версию Django:

      pip install --upgrade django

      Можно установить и любую другую версию. Например, 1.0:

      pip install --upgrade django==1.0

      Таким же образом можно установить и любые другие модули Python.

    3. Создайте папку, где будут располагаться ваши проекты. Эта папка должна находиться вне DOCUMENT_ROOT, то есть вне папок вида domains/имя_домена. Лучшим вариантом будет создать папку django рядом с директорией domains:

      mkdir django

    4. Перейдите в папку с проектами и создайте новый проект:

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

      В результате будет создана папка имя_проекта, со стандартными файлами settings.py, manage.py, urls.py и т. п.

    5. Откройте файл settings.py и измените в нем значения необходимых переменных. В качестве значения переменной MEDIA_ROOT укажите путь /home/usersX/первая_буква_логина/логин/domains/имя_домена/ *, а в качестве значения переменной MEDIA_URL — http://имя_домена/.

      Внимание! Если вы будете использовать команду syncdb через SSH, то при использовании MySQL в качестве движка баз данных в поле DATABASE_HOST обязательно нужно указать IP 127.0.0.1. Подробнее об этом здесь.

      Более подробную информацию о переменных, доступных для редактирования в settings.py, можно найти в документации Django.

      * Здесь и далее X в имени директории usersX может быть целым числом (1, 2, …) или вообще отсутствовать. Точное значение для вашего аккаунта уточняйте в разделе «Техподдержка / Техническая информация» контрольной панели аккаунта (смотрите значение параметра «Домашняя директория»).

    6. Если вы будете использовать встроенный административный интерфейс Django, то с помощью SSH скопируйте его медиафайлы внутрь директории своего домена:

      cd ~/domains/имя_домена
      cp -r ~/virtualenv/MyEnv/lib/python2.7/site-packages/django/contrib/admin/media media
      echo "SetHandler None" > media/.htaccess # при использовании mod_python (см. ниже)

      (Вы можете назвать эту папку и по-другому, не обязательно media, но в таком случае не забудьте соответственно изменить значение переменной ADMIN_MEDIA_PREFIX в файле settings.py.)

    7. Если вы будете использовать mod_wsgi (предпочтительный вариант):

      В директории домена, на котором будет находиться ваш проект (domains/имя_домена) создайте файл django.wsgi и поместите в него такие строки:

      import os, sys
      virtual_env = os.path.expanduser('~/virtualenv/MyEnv')
      activate_this = os.path.join(virtual_env, 'bin/activate_this.py')
      execfile(activate_this, dict(__file__=activate_this))
      sys.path.insert(0, os.path.join(os.path.expanduser('~'), 'django'))
      os.environ['DJANGO_SETTINGS_MODULE'] = 'имя_проекта.settings'
      import django.core.handlers.wsgi
      application = django.core.handlers.wsgi.WSGIHandler()

      Примечание. Обратите также внимание на пятую и шестую строки этого кода: если вы в своих проектах обычно не используете имя проекта внутри оператора import (например, «from имя_приложения.models import *», а не «from имя_проекта.имя_приложения.models import *» в файле views.py), то указывать имя проекта в третьей строке не нужно, а во второй, наоборот, нужно:

      sys.path.insert(0, os.path.join(os.path.expanduser('~'), 'django/имя_проекта'))
      os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

      Вернитесь к этому примечанию, если будете получать ошибки вида «ImportError: No module named…»

      Затем создайте в той же папке еще один файл — .htaccess — и поместите в него следующие директивы:

      AddHandler wsgi-script .wsgi
      RewriteEngine on
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule ^(.*)$ /django.wsgi/$1 [QSA,PT,L]

    8. Если вы будете использовать mod_python:

      В папке с проектами (django) создайте файл modpython_virtualenv.py с таким содержимым внутри:

      import os
      virtual_env = os.path.expanduser('~/virtualenv/MyEnv')
      activate_this = os.path.join(virtual_env, 'bin/activate_this.py')
      execfile(activate_this, dict(__file__=activate_this))
      from django.core.handlers.modpython import handler

      В директории домена, на котором будет находиться ваш проект (domains/имя_домена) создайте файл .htaccess и поместите в него такие строки:

      AddDefaultCharset utf-8
      SetHandler python-program
      PythonHandler modpython_virtualenv
      SetEnv DJANGO_SETTINGS_MODULE имя_проекта.settings
      PythonPath "['/home/usersX/первая_буква_логина/логин/django'] + sys.path"
      PythonDebug On
      PythonAutoReload On

      Позже, когда проект будет запускаться в публичную эксплуатацию, не забудьте поменять значения директив PythonDebug и PythonAutoReload на Off — это предотвратит демонстрацию отладочной информации об ошибках всем посетителям и несколько ускорит работу сайта.

      Примечание. Обратите также внимание на директивы SetEnv и PythonPath: если вы в своих проектах обычно не используете имя проекта внутри оператора import (например, «from имя_приложения.models import *», а не «from имя_проекта.имя_приложения.models import *» в файле views.py), то указывать имя проекта в директиве SetEnv не нужно, а в PythonPath, наоборот, нужно:

      SetEnv DJANGO_SETTINGS_MODULE settings
      PythonPath "['/home/usersX/первая_буква_логина/логин/django/имя_проекта'] + sys.path"

      Кроме того, поместите файл modpython_virtualenv.py внутрь папки проекта.

      Вернитесь к этому примечанию, если будете получать ошибки вида «ImportError: No module named…»

      Далее, во всех папках в директории домена, в которых будут содержаться статические файлы (например, css, js, images и т. п.), нужно также создать по файлу .htaccess с такой строкой внутри:

      SetHandler None

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

Свернуть все Развернуть все

Вход в контрольную панель

Вход в почтовый интерфейс

Проверка домена

© «Джино», 2003—2012, , +7 495 229-30-31. Лицензия на телематические услуги связи № 48950 от 09.03.2007. Правовая информация.