O foaie de trisare pentru crearea de aplicatii web cu cadrul Django folosind limbajul Python. Majoritatea rezumatelor si exemplelor se bazeaza pe documentatia oficiala pentru Django v2.0.

Sectiuni

  • ???? Initializarea pipenv (optional)
  • ???? Crearea unui proiect
  • ???? Crearea unei aplicatii
  • ???? Crearea unei vizualizari
  • ???? Crearea unui sablon
  • ???? Crearea unui model
  • ???? Crearea de obiecte de model si interogari
  • ???? Folosind pagina de administrare

???? Initializarea pipenv (optional)

  • Creati folderul principal cu $ mkdir <folder> si navigati la acesta cu $ cd <folder>
  • Initializati pipenv cu instalarea $ pipenv
  • Introduceti pipenv shell cu $ pipenv shell
  • Instalati django cu $ pipenv instalati django
  • Instalati alte dependente de pachet cu $ pipenv instalati <numele_pachet>

???? Crearea unui proiect

  • Navigati la folderul principal cu $ cd <folder>
  • Creati proiectul cu $ django-admin startproject <nume_proiect>

Directorul proiectului ar trebui sa arate astfel:

project / manage.py project / __init__.py settings.py urls.py wsgi.py
  • Rulati serverul de dezvoltare cu $ python manage.py runserver in directorul proiectului
  • Daca doriti ca SECRET_KEY sa fie mai sigur, il puteti seta sa faca referire la o variabila de mediu
  • In fisierul settings.py din directorul proiectului schimbati linia SECRET_KEY cu urmatorul:
SECRET_KEY = os.environ.get (‘SECRET_KEY’)
  • Pentru a genera rapid un hexagonal aleatoriu pentru cheia ta secreta:
>>> importa secrete >>> secrets.token_hex ()
  • Puteti seta aceasta variabila de mediu in shell cu exportul SECRET_KEY = <secret_key>

???? Crearea unei aplicatii

  • Navigati la folderul exterior al proiectului $ cd <folder_project_folder>
  • Creati aplicatie cu $ python manage.py startapp <app_name>
  • In folderul aplicatiei, creati un fisier numit urls.py

Directorul proiectului ar trebui sa arate acum:

project / manage.py db.sqlite3 project / __init__.py settings.py urls.py wsgi.py app / migrations / __init__.py __init__.py admin.py apps.py models.py tests.py urls.py views.py
  • Pentru a include aceasta aplicatie in proiectul dvs., adaugati-o in fisierul settings.py al proiectului adaugandu-i numele la lista INSTALLED_APPS:
INSTALLED_APPS = [„aplicatie”, # …]
  • Pentru a migra modificarile peste:
$ python manage.py migreaza

???? Crearea unei vizualizari

  • In directorul aplicatiei, deschideti views.py si adaugati urmatoarele:
din django.http import HttpResponse def index (request): return HttpResponse (“Hello, World!”)
  • Inca in directorul aplicatiei, deschideti (sau creati) urls.py
din django.urls calea de import din. import vizualizari urlpatterns = [cale (”, views.index, nume = ‘index’),]
  • Acum, in directorul proiectului, editati urls.py pentru a include urmatoarele
din django.contrib import admin din django.urls import include, path urlpatterns = [path (‘app /’, include (‘app.urls’)), path (‘admin /’, admin.site.urls),]
  • Pentru a crea un model de adresa URL la indexul site-ului, utilizati urmatorul model url:
urlpatterns = [cale (“”, include (‘app.urls’)),]
  • Retineti: exista mai multe fisiere numite urls.py
  • Fisierul urls.py din directoarele aplicatiei este organizat de urls.py gasit in folderul proiectului.

???? Crearea unui sablon

  • In directorul aplicatiei, fisierele HTML, CSS si JavaScript se afla in urmatoarele locatii:
app / templates / index.html static / style.css script.js
  • Pentru a adauga un sablon la vizualizari, deschideti views.py in directorul aplicatiei si includeti urmatoarele:
din django.shortcuts import index de redare def (cerere): returneaza redarea (cerere, ‘index.

porno friki maduras corriendose
torbe videos completos tv porno
nudismo porno vidios xxx
follando sin querer coñitos
travestis meando pilladas desnudas
guarras españolas videoxxx
intercambio de parejas en español videos travestis
videosgay penes grandes
videoxxx scat porno
incesto lesbianas porno trans
videos de chicas gratis gitana follando
descargar peliculas porno español madres incestuosas
xxxhd peliculas eroticas gratis
videos chicas gratis abuelas follando
abuelas españolas xxx pajas caseras
incesto abuela nieto naomi woods
videos porno subtitulados porno casero españa
la engaña para follar madre pajea a su hijo
videos porno morbosos maduras.com
videos porno tetonas gratis coños calientes

html’)

  • Pentru a include contextul in sablon:
def index (request): context = {“context_variable”: context_variable} returneaza randarea (cerere, ‘index.html’, context)
  • In fisierul HTML, puteti face referinta la fisierele statice adaugand urmatoarele:
{% load static%} <! DOCTYPE html> <html lang = “ro”> <head> <meta charset = “UTF-8”> <meta name = “viewport” content = “width = device-width, initial- scale = 1 “> <link rel =” stylesheet “href =” {% static ‘styles.css’%} “> </head> </html>
  • Pentru a va asigura ca includeti urmatoarele in setarile dvs., py:
STATIC_URL = ‘/ static /’ STATICFILES_DIRS = [os.path.join (BASE_DIR, “static”)]
  • Pentru a adauga o extensie:
{% extends ‘base.html’%} {% block content%} Buna ziua, lume! {% endblock%}
  • Si apoi in base.html adaugati:
<body> {% block content%} {% endblock%} </body>

???? Crearea unui model

  • In fisierul models.py al aplicatiei, se poate adauga un exemplu de model simplu cu urmatoarele:
din django.db import modele clasa Person (models.Model): first_name = models.CharField (max_length = 30) last_name = models.CharField (max_length = 30)

Retineti ca nu este nevoie sa creati o cheie primara, Django adauga automat un IntegerField.

  • Pentru a efectua modificari la modelele dvs., utilizati urmatoarele comenzi in shell:
$ python manage.py makemigrations <app_name> $ python manage.py migreaza

Nota: includerea <app_name> este optionala.

  • O relatie unu-la-multi poate fi facuta cu un ForeignKey:
clasa Muzician (models.Model): first_name = models.CharField (max_length = 50) last_name = models.CharField (max_length = 50) instrument = models.CharField (max_length = 100) class Album (models.Model): artist = models. ForeignKey (Musician, on_delete = models.CASCADE) name = models.CharField (max_length = 100) release_date = models.DateField () num_stars = models.IntegerField ()
  • In acest exemplu, pentru a interoga setul de albume ale unui muzician:
>>> m = Musician.objects.get (pk = 1) >>> a = m.album_set.get ()
  • O relatie de la multi la multi se poate face cu un ManyToManyField:
clasa Topping (models.Model): # … trece clasa Pizza (models.Model): # … toppings = models.ManyToManyField (Topping)

Retineti ca ManyToManyField este definit doar intr-un singur model . Nu conteaza ce model are campul, dar daca aveti dubii, ar trebui sa fie in modelul cu care va fi interactionat intr-o forma.

  • Desi Django ofera o relatie OneToOneField, o relatie one-to-one poate fi definita si prin adaugarea kwarg de unic = Adevarat la ForeignKey a unui model:
ForeignKey (SomeModel, unique = True)
  • Pentru mai multe detalii, documentatia oficiala pentru modelele de baze de date ofera o multime de informatii si exemple utile.

???? Crearea de obiecte de model si interogari

  • Exemplu de fisier models.py:
din django.db import modele clasa Blog (models.Model): nume = models.CharField (max_length = 100) slogan = models.TextField () def __str __ (self): returneaza clasa self.name Autor (models.Model): nume = models.CharField (max_length = 200) email = models.EmailField () def __str __ (self): returneaza self.name class Entry (models.Model): blog = models.ForeignKey (Blog, on_delete = models.CASCADE) headline = models.CharField (max_length = 255) body_text = models.TextField () pub_date = models.DateField () mod_date = models.DateField () autori = models.ManyToManyField (Author) n_comments = models.IntegerField () n_pingbacks = models.IntegerField ( ) rating = models.IntegerField () def __str __ (self): returneaza self.headline
  • Pentru a crea un obiect in shell:
>>> din blog.models import Blog >>> b = Blog (name = ‘Beatles Blog’, slogan = ‘Toate cele mai recente stiri Beatles.’) >>> b.save ()
  • Pentru a salva o modificare intr-un obiect:
>>> b.name = „Cel mai bun blog Beatles” >>> b.save ()
  • Pentru a prelua obiecte:
>>> all_entries = Entry.objects.all () >>> indexed_entry = Entry.objects.get (pk = 1) >>> find_entry = Entry.objects.filter (name = ‘Blogul Beatles’)

???? Folosind pagina de administrare

  • Pentru a crea un superutilizator:
$ python manage.py creeaza superutilizator
  • Pentru a adauga un model la pagina de administrare, includeti urmatoarele in admin.py:
din django.contrib import admin din .models import Autor, carte admin.site.register (autor) admin.site.register (carte)