Основи Python и Django. / Django проста модель. Команда для завантаження даних. / Django проста модель. Команда для завантаження даних.

Django проста модель. Команда для завантаження даних.

Встановлення.

pip install Django

Створення проекту

 django-admin startproject myprj

 cd myprj

Створюємо базу даних

./manage.py migrate

Запускаємо сервер

 ./manage.py runserver

Створюємо додаток

./manage.py startapp main

main - название приложения

Включити програму в settings.py

 INSTALLED_APPS = [
     ...
     'main'
 ]

Додаємо новий урл в urls.py

urlpatterns = [
    path('', index),
    path('admin/', admin.site.urls),
]

Створюємо нову функцію в main/views.py

 def index(request):
     return render(request,'index.html')

У settings.py визначаємо шлях до шаблонів.

TEMPLATES = [
    {
    ....
    'DIRS': [BASE_DIR / 'templates'],

Створюємо templates у папці проекту та кладемо index.html

<!DOCTYPE html>
<html lang="en">


<head>
    <meta charset="utf-8">
    <title>
        Title
    </title>
</head>

<body >

   <h1> Hello </h1>

</body>

</html>

Створюємо клас моделі у файлі models.py

from django.db import models

class Page(models.Model):
    title = models.CharField(max_length=250)
    content = models.TextField()

посилання на всі типи полів

Створюємо файл міграції командою

 ./manage.py makemigrations

Застосовуємо

./manage.py migrate

Створюємо команду завантаження даних

у новому каталозі main/management/commands/hello.py

from django.core.management.base import BaseCommand, CommandError

class Command(BaseCommand):

    def handle(self, *args, **options):
       print('Hello command!!!')

Запускаємо команду

 ./manage.py hello

Додаємо дані до таблиці

from page.models import Page


class Command(BaseCommand):

    def handle(self, *args, **options):
       print('Hello command!!!')
       Page.objects.all().delete()
       page1 = Page()
       page1.title = 'Index page'
       page1.content = 'content content'
       page1.save()

Вибираємо сторінку з функції во view

from page.models import Page

def index(request):
    page = Page.objects.get(id=7)
    return render(request,'index.html',{"page": page})

Виводимо у шаблон

<h1> {{ page.title }} </h1>