====== 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