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
Заходимо в адмін інтерфейс http://localhost:8000/admin.
Додаємо суперкористувача та відповідаємо на поставлені запитання.
./manage.py createsuperuser
Після авторизації потрапляємо на інтерфейс адміністратора.
Зміна стартової сторінки.
Створення програми.
./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.
Список передати шаблон у вигляді списку словників.
Зміст списку.
- Прізвище.
- Ім’я.
- По-батькові.
- Підлога
- Вік.
У таблиці різним кольором позначити чоловіків та жінок.
Осередки із віком жінок залишити порожніми незважаючи на присутність віку у словнику.