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.
Список передать в шаблон в виде списка словарей.
Содержимое списка.
- Фамилия.
- Имя.
- Отчество.
- Пол
- Возраст.
В таблице разным цветом обозначить мужчин и женщин.
Ячейки с возрастом женщин оставить пустыми несмотря на присутствие возраста в словаре.