all in all linux python VCS

Основы Django

Настройка виртуального окружения в linux

Устанавливаем virtualenvwrapper

pip install virtualenvwrapper

Создаем директорию для виртуальных окружений:

mkdir ~/.venvs

Добавляем в файл .bashrc в домашней директории строчки ниже. Путь /usr/local/bin/virtualenvwrapper.sh может отличаться в зависимости от дистрибутива. Этот пример актуален для ubuntu 16

export WORKON_HOME=~/.venvs
source /usr/local/bin/virtualenvwrapper.sh

Работа с проектом в PyCharm

  • Открываем проект
  • Конфигурируем интерпретатор: Preferences -> Project -> Project Interpreter -> Шестерёнка -> Add Local -> В папке с виртуальным окружением проекта выбираем python2.7
  • Конфигурируем поддержку Django в проекте: Preferences -> Languages & Frameworks -> Django -> Включаем галочку если выключена -> Прописываем все нужные пути
  • Запускаем проект

Как Django обрабатывает запрос

  • Определяет модуль где хранится корневая конфигурация роутера (ROOT_URLCONF)
  • Загружает модуль, ищет urlpatterns
  • Проходит через все паттерны пока URL запроса не совпадёт с одним из паттернов
  • После совпадения вызывается view-функция со следующими аргументами:
    • объект HttpRequest
    • позиционные аргументы полученные из неименованных групп регулярного выражения или именованные аргументы полученные из именованных групп
  • Если не было совпадений возвращается ошибка

Обратный роутинг

При объявлении роута можно указать его имя, это нужно для того чтобы можно было сгенерировать урлу внутри кода.

В python-коде

from django.core.urlresolvers import reverse
reverse('special_2003')
reverse('month_archive', args=(2014, 3))
reverse('article_detail', kwargs={'slug': 'statya-kakaya-to'})

В шаблоне

{% url 'article_detail' 'statya-kakaya-to' %}

Структура проекта Django

Структура корневой папки:

  • {project_name}/
  • {app1_name}/ — папка с Django-приложением
  • {app2_name}/ — папка с ещё одним Django-приложением
  • {project_name}/ — папка с основным приложением, имя которой совпадает с именем проекта, создаётся автоматически
  • settings.py — конфигурация проекта
  • urls.py — файл с которого начинает работу роутер
  • wsgi.py — точка входа в wsgi-приложение
  • manage.py — скрипт управления проектом

Структура Django-приложения:

  • templates/ — директория содержащая все шаблоны для данного приложения
  • migrations/ — директория с миграциями - скриптами для переноса изменений в моделях на схему базы данных
  • admin.py — файл с конфигурацией админки для данного приложения
  • models.py — файл с моделями данных
  • tests.py
  • views.py — файл с вьюхами
  • urls.py — конфигурация роутера для данного приложения

Django-приложение — python-пакет. Разбиение проекта на приложения — способ логически разбить приложение на части.

Конфигурация проекта

settings.py — файл содержащий конфигурацию Django-проекта.

Важные настройки:

  • DEBUG — управление режимом отладки
  • INSTALLED_APPS — список всех Django-приложений используемых в данном проекте
  • ROOT_URLCONF — файл содержащий корневую конфигурацию роутера
  • STATIC_ROOT — директория куда будет собрана вся статика
  • DATABASES — словарь, содержащий настройки подключения к базе данных

Views

View-функция — это обычная функция которая принимает веб-запрос и отдаёт веб-ответ.

def article_detail(request, slug):
    try:
        article = Article.objects.get(slug=slug)
    except Article.DoesNotExist:
        raise Http404
    return HttpResponse(article.text)
26.06.2018

Комментарии

python & webdev