Apžvalga

Django yra aukšto lygio Python žiniatinklio karkasas, skatinantis greitą kūrimą ir švarų, pragmatišką dizainą. Jis turi įmontuotą ORM, administravimo skydelį, autentifikavimo sistemą ir šablonų variklį.

Prieš pradėdami
Įsitikinkite, kad jūsų valdymo skydelis atidarytas - jums reikės ten rodomų Git prisijungimo duomenų. Šiame šablone yra Django, Gunicorn, mysqlclient MySQL palaikymui ir Django REST Framework.

Greitas startas

1

Sukurkite repozitoriją iš šablono

Valdymo skydelyje pereikite į skirtuką Tools & Deployment. Spauskite mygtuką "New Repository", išskleidžiamame sąraše pasirinkite Django šabloną, įveskite repozitorijos pavadinimą ir subdomeną, tada spauskite "Create Repository".

2

Klonuokite savo repozitoriją

git clone https://<git-server>/<username>/<repo-name>.git
cd <repo-name>
3

Įdiekite priklausomybes

pip install -r requirements.txt
4

Sukonfigūruokite duomenų bazę ir paleiskite migracijas

Atnaujinkite duomenų bazės nustatymus settings.py faile (žr. „Duomenų bazės konfigūracija" žemiau), tada paleiskite:

python manage.py migrate
python manage.py runserver

Pagal numatytuosius nustatymus serveris veikia adresu http://localhost:8000.

5

Įkelkite savo pakeitimus

git add .
git commit -m "Initial setup"
git push origin main
Kiekvienas push į Git automatiškai įdiegia jūsų aplikaciją. Patikrinkite Modulio darbo URL valdymo skydelyje, kad pamatytumėte savo gyvą svetainę.

Vietinis kūrimas su Docker

Jei vietoje neturite įdiegto Python, galite naudoti Docker savo Django aplikacijai paleisti.

Kas yra Docker?
Docker sukuria izoliuotus „konteinerius" su visa reikalinga programine įranga (Python, pip) jos neįdiegiant į jūsų kompiuterį.

Komandų vykdymas su Docker

# Įdiegti priklausomybes
docker run --rm -v $(pwd):/app -w /app python:3.12 pip install -r requirements.txt

# Paleisti kūrimo serverį
docker run --rm -v $(pwd):/app -w /app -p 8000:8000 python:3.12 sh -c "pip install -r requirements.txt && python manage.py runserver 0.0.0.0:8000"

Duomenų bazės konfigūracija

NStrim platforma jums suteikia MySQL/MariaDB duomenų bazę. Atnaujinkite DATABASES nustatymą savo settings.py faile.

Atnaujinkite settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '<username>',
        'USER': '<username>',
        'PASSWORD': '<password>',
        'HOST': 'db.<session-domain>',
        'PORT': '3306',
    }
}
Svarbu
Jūsų duomenų bazės pavadinimas ir vartotojo vardas paprastai sutampa su jūsų valdymo skydelio vartotojo vardu (pvz., student01). Tikslioms reikšmėms patikrinkite valdymo skydelio prisijungimo duomenų skiltį.

Projekto struktūra

├── project/
│   ├── settings.py            # Projekto konfigūracija
│   ├── urls.py                # Šaknies URL konfigūracija
│   └── wsgi.py                # WSGI įėjimo taškas
├── app/
│   ├── models.py              # Duomenų bazės modeliai
│   ├── views.py               # Rodinio funkcijos / klasės
│   ├── urls.py                # Aplikacijos URL šablonai
│   ├── serializers.py         # DRF serializeriai
│   ├── admin.py               # Admin skydelio konfigūracija
│   └── templates/             # HTML šablonai
├── static/                    # CSS, JS, paveikslėliai
├── manage.py                  # Django valdymo CLI
├── requirements.txt           # Python priklausomybės
└── Dockerfile                 # Docker konfigūracija
        

Įprastos užduotys

Modelio kūrimas

from django.db import models

class User(models.Model):
    name = models.CharField(max_length=100)
    email = models.EmailField(unique=True)
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.name

Rodinio kūrimas

from django.http import JsonResponse
from .models import User

def user_list(request):
    users = list(User.objects.values('id', 'name', 'email'))
    return JsonResponse(users, safe=False)

URL konfigūracija

from django.urls import path
from . import views

urlpatterns = [
    path('users/', views.user_list, name='user-list'),
]

Naudingos komandos

python manage.py runserver Paleisti kūrimo serverį
python manage.py migrate Vykdyti duomenų bazės migracijas
python manage.py makemigrations Sukurti naujas migracijas iš modelio pakeitimų
python manage.py createsuperuser Sukurti administratorių /admin skydeliui
python manage.py shell Interaktyvi Python terpė su Django

Trikčių šalinimas

OperationalError: (2002) Can't connect to MySQL server

Priežastis: Duomenų bazės serveris yra neteisingas arba nepasiekiamas.

Sprendimas: Patikrinkite, ar HOST DATABASES nustatyme sutampa su valdymo skydelio duomenų bazės serveriu.

OperationalError: (1045) Access denied for user

Priežastis: Neteisingas vartotojo vardas arba slaptažodis.

Sprendimas: Du kartus patikrinkite, ar USER ir PASSWORD jūsų settings.py faile tiksliai atitinka valdymo skydelio prisijungimo duomenis.

No module named 'MySQLdb'

Sprendimas: Įdiekite MySQL klientą: pip install mysqlclient. macOS sistemoje taip pat gali prireikti: brew install mysql-client.

DisallowedHost: Invalid HTTP_HOST header

Sprendimas: Pridėkite savo diegimo domeną į ALLOWED_HOSTS settings.py faile: ALLOWED_HOSTS = ['*']

Diegimo eiga

Kodo pakeitimas git push pip install Gyvai!
Daugiau informacijos rasite oficialioje Django dokumentacijoje.