====== Django ======
===== Створення проекта Django =====
cd django
- Встановлення пітона ''**sudo apt install python3-pip**''
- Встановлення віртуального оточення ''**sudo pip install pipenv**''
- Встановлення джанго **''pipenv install django==3.0'' **
- Робоча консоль для джанго **''pipenv shell'' **
- Створення нового проекта Джанго в робочій директорії - ''**django-admin startproject test_project .**''
- Створення нового додадку (категорії сайта) - ''**python3 manage.py startapp main**''
- Зареєструвати новий додадок в setting.py INSTALLED_APPS - **'main',**
- Створити папку j**ango/main/templates/main** / для шаблонів **ХТМЛ** сторінок
- Налаштувати **jango/urls.py**
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('main.urls'))
]
Підключити jango/main/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index),
path('about', views.about),
]
Запуск локального веб-сервера
''**python3 manage.py runserver**''
===== Створення нової сторінки без БД та форми =====
- Створити шаблон в main/templates/main/newpage.html
- Підключити сторінку в urls.py
- Додати функцію в main/views.php яка буде обробляти запрос на отримання сторінки з шаблону та виводити інфу в браузер
- За потреби підключити base.html до нової сторінки або скопіювать шаблон з іншої сторінки
===== Створення нового модуля (сторінка з БД та формою) =====
1. Створити модуль (таблиця в базі даних) в **models.py**
class Task(models.Model):
title = models.CharField('Назва', max_length=50)
task = models.TextField('Опис')
def __str__(self):
return self.title
class Meta: # Змінити вигляд назви в адмінці для цієї таблиці.
verbose_name = 'Завдання'
verbose_name_plural = 'Завдання'
1.1. Створити міграцію нового модуля "**python3 manage.py makemigrations**"
1.2. Виконати міграцію **python3 manage.py migrate**
1.3. Зареєструвати таблицю бд в **admin.py**
from django.contrib import admin
from .models import Task
admin.site.register(Task)
2. Підключити модуль до **forms.py** та створити нову форму. В цій формі можна додавати класи до інпутів
class TaskForm(ModelForm):
class Meta:
model = Task
fields = ['title', 'task']
widgets = {
'title': TextInput(attrs={
'class': 'form-control',
'placeholder': 'Введіть назву'
}),
'task': Textarea(attrs={
'class': 'form-control',
'placeholder': 'Введіть опис'
}),
}
3. Створити шаблон сторінки **newpage.html**
4. Підключити шаблон в **urls.php**
urlpatterns = [
path('', views.index, name='home'),
path('about', views.about, name='about'),
path('create', views.create, name='create'),
]
5. Додати функцію в main/**views.php** яка буде обробляти запрос на отримання сторінки з шаблону та виводити інфу в браузер. Також підключити **models.py** i **forms.py** до views.php
def create(request):
error = ''
if request.method == 'POST':
form = TaskForm(request.POST)
if form.is_valid():
form.save()
return redirect('home')
else:
error = 'Форма заповнена некоректно'
form = TaskForm()
context = {
'form': form,
'error': error
}
return render(request, 'main/create.html', context)
===== Створення суперюзера для адмінки =====
''python3 manage.py createsuperuser ''
* login
* email
* password