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. Вік.

У таблиці різним кольором позначити чоловіків та жінок.

Осередки із віком жінок залишити порожніми незважаючи на присутність віку у словнику.