Django. Начало работы. Деплой проекта.

Основы Python и Django. -> Django. Начало работы.

Django. Начало работы.

Создаем папку проекта.

mkdir news
cd news

Создаем и активируем виртуальное окружение.

virtualenv -p python3 venv
. ./venv/bin/activate

Создаем файл с зависимостями requirements.txt.

Django

Ставим django.

python -m pip install -r requirements.txt

Создаем проект.

django-admin startproject news

Меняем директорию и создаем базу данных.

cd news
./manage.py migrate

Стартуем веб-сервер разработки.

./manage.py startserver

start page

Заходим в админ интерфейс http://localhost:8000/admin.

start page

Добавляем суперпользователя и отвечаем на поставленные вопросы.

./manage.py createsuperuser

После авторизации попадаем на интерфейс администратора.

start page

Изменение стартовой страницы.

Создание приложения.

./manage.py startapp main

Подключение его в проект setting.py.

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'main'
]

Создаем функцию в main/views.py, обслуживающую маршрут.

from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.

def index(request):
    return HttpResponse('Hello')

Импортируем эту функцию в urls.py и привяжем к ней стартовую станицу.

from main.views import index

urlpatterns = [
    path('', index),
    path('admin/', admin.site.urls),
]

Попробуем использовать шаблонизатор методом render.

def index(request):
    return render(request,'index.html',{'name': 'Dima'})

Создадим каталог для шаблонов в папке templates в корне проекта и в нем index.html.

<!doctype html>
<html lang="en">
  <head>
  </head>
  <body>
    <h1>Hello, world!</h1>
  </body>
</html>

Для того, чтобы сообщить Django где искать шаблоны, добавим путь к папке templates в settings.py.

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        ...
    },
]

Установка bootstrap.

npm install bootstrap

Пример подключения стилей в шаблоне.

<link rel="stylesheet" href="/static/bootstrap/dist/css/bootstrap.min.css" >

Настройки проекта под данное подключение.

STATIC_URL = '/static/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "node_modules"),
]

Передача сложных структур в шаблон.

def index(request):
    userlist = [
        {'name': 'Dima'},
        {'name': 'Vova'},
        {'name': 'Kolya'},
    ]
    cntx = {'name': 'Dima', 'userlist': userlist}

    return render(request,'index.html',cntx)

Шаблонная логика.

<ul>
    {% for user in userlist %}
        {% if user.name == 'Dima' %}
           <li>{{ user.name }}</li>
        {% endif %}
    {% endfor  %}
</ul>
Основы Python и Django. -> Django. Деплой проекта с помощью GIT репозитория.

Django. Деплой проэкта через GIT. Удаленный запуск команд.

Подготовка репозитория.

Создание репозитория.

git init

Проверка состояния.

git status

Исключение файлов и каталогов из отслеживания .gitignore.

venv
db.sqlite3
node_modules
package-lock.json
__pycache__

Можно применять маски.

media/*
*.log

Привязка к удаленному репозиторию и первый push.

git remote add origin git@github.com:zdimon/django-start.git
git push -u origin master

Коммит изменений.

git add --all
git commit -m 'comment'
git push

Генерация ключа.

ssh-kaygen

Клонирование репозитория.

git clone git@github.com:zdimon/django-start.git

Запуск удаленных команд.

ssh webmaster@188.120.241.104 'cd django-start; git pull'
Основы Python и Django. -> Домашнее задание.

Django. Начало работы. Домашнее задание.

Создать проект Django со списком пользователей на главной странице в стилях Bootstrap.

Список передать в шаблон в виде списка словарей.

Содержимое списка.

  1. Фамилия.
  2. Имя.
  3. Отчество.
  4. Пол
  5. Возраст.

В таблице разным цветом обозначить мужчин и женщин.

Ячейки с возрастом женщин оставить пустыми несмотря на присутствие возраста в словаре.