Django
Pārskats
Django ir augsta līmeņa Python tīmekļa ietvars, kas veicina ātru izstrādi un tīru, pragmatisku dizainu. Tas ietver ORM, administrācijas paneli, autentifikācijas sistēmu un iebūvētu veidņu dzinēju.
Ātrais starts
Izveidot repozitoriju no veidnes
Savā vadības panelī atveriet cilni Tools & Deployment. Noklikšķiniet uz pogas "New Repository", izvēlieties Django veidni no nolaižamā saraksta, ievadiet repozitorija nosaukumu un apakšdomēnu, un noklikšķiniet "Create Repository".
Klonēt savu repozitoriju
git clone https://<git-server>/<username>/<repo-name>.git
cd <repo-name>
Instalēt atkarības
pip install -r requirements.txt
Konfigurēt datubāzi un palaist migrācijas
Atjauniniet datubāzes iestatījumus failā settings.py (skatiet Datubāzes konfigurācija zemāk), pēc tam palaidiet:
python manage.py migrate
python manage.py runserver
Serveris pēc noklusējuma darbojas uz http://localhost:8000.
Augšupielādēt izmaiņas
git add .
git commit -m "Initial setup"
git push origin main
Lokālā izstrāde ar Docker
Ja jums nav lokāli instalēts Python, varat izmantot Docker, lai palaistu savu Django lietojumprogrammu.
Komandu izpilde ar Docker
# Instalēt atkarības
docker run --rm -v $(pwd):/app -w /app python:3.12 pip install -r requirements.txt
# Palaist izstrādes serveri
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"
Datubāzes konfigurācija
NStrim platforma nodrošina jums MySQL/MariaDB datubāzi. Atjauniniet DATABASES iestatījumu savā settings.py failā.
Atjaunināt settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '<username>',
'USER': '<username>',
'PASSWORD': '<password>',
'HOST': 'db.<session-domain>',
'PORT': '3306',
}
}
student01). Pārbaudiet vadības paneļa piekļuves datu sadaļu, lai iegūtu precīzas vērtības.Projekta struktūra
├── project/
│ ├── settings.py # Projekta konfigurācija
│ ├── urls.py # Galvenā URL konfigurācija
│ └── wsgi.py # WSGI ieejas punkts
├── app/
│ ├── models.py # Datubāzes modeļi
│ ├── views.py # Skatu funkcijas / klases
│ ├── urls.py # Lietotnes URL maršruti
│ ├── serializers.py # DRF serializatori
│ ├── admin.py # Administrācijas paneļa konfigurācija
│ └── templates/ # HTML veidnes
├── static/ # CSS, JS, attēli
├── manage.py # Django pārvaldības CLI
├── requirements.txt # Python atkarības
└── Dockerfile # Docker konfigurācija
Bieži veicamie uzdevumi
Modeļa izveide
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
Skata izveide
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 konfigurācija
from django.urls import path
from . import views
urlpatterns = [
path('users/', views.user_list, name='user-list'),
]
Noderīgas komandas
python manage.py runserver
Palaist izstrādes serveri
python manage.py migrate
Palaist datubāzes migrācijas
python manage.py makemigrations
Izveidot jaunas migrācijas
python manage.py createsuperuser
Izveidot administratora lietotāju /admin panelim
python manage.py shell
Interaktīvā Python čaula ar Django
Problēmu novēršana
OperationalError: (2002) Can't connect to MySQL server
Iemesls: Datubāzes resursdators ir nepareizs vai nav pieejams.
Risinājums: Pārbaudiet, vai HOST iestatījumā DATABASES atbilst datubāzes resursdatoram no jūsu vadības paneļa.
OperationalError: (1045) Access denied for user
Iemesls: Nepareizs lietotājvārds vai parole.
Risinājums: Vēlreiz pārbaudiet, vai USER un PASSWORD jūsu settings.py failā precīzi sakrīt ar jūsu vadības paneļa piekļuves datiem.
No module named 'MySQLdb'
Risinājums: Instalējiet MySQL klientu: pip install mysqlclient. MacOS sistēmā var būt nepieciešams arī: brew install mysql-client.
DisallowedHost: Invalid HTTP_HOST header
Risinājums: Pievienojiet savu izvietošanas domēnu pie ALLOWED_HOSTS failā settings.py: ALLOWED_HOSTS = ['*']