Înainte de a crea prima noastră aplicație, trebuie să ne asigurăm că avem tot ce ne trebuie:

$ cd /path/to/my/project/directory
$ [sudo] pip install virtualenv
$ virtualenv venv
$ source venv/bin/activate
$ pip install -e django

Crearea proiectului

Pentru a crea un nou proiect, trebuie să rulăm urmatoarea comandă:

$ django-admin startproject awp

Aceasta va crea un director numumit awp în directorul curent. Să vedem ce a creat comanda startproject:

awp
├── awp
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py 
└── manage.py

Noile fișiere apărute sunt:

  • manage.py: un utilitar de linie de comandă care vă permite să interacționați cu proiectul Django în diverse moduri. Mai multe detalii despre acesta puteți vedea aici
  • Directorul awp interior este de fapt pachetul Python pentru proiectul nostru. Numele său este numele pachetului Python pe care va trebui să îl utilizăm pentru a importa ceva din interiorul acestuia (de exemplu awp.urls).
  • awp/__init__.py: un fișier gol care îi spune lui Python ca directorul părinte trebuie considerat un pachet Python.(Mai multe detalii despre pachetele Python aici)
  • awp/settings.py: Setările/Configurările pentru proiectul nostru. Aici puteți citi tot ce trebuie să știți despre cum funcționează aceste setări.
  • awp/urls.py: Declarațiile URL-urilor folosite pentru proiectul nostru.(Mai multe detalii despre URL-uri aici)
  • awp/wsgi.py: Un entry-point pentru web serverele compatibile WSGI. (Mai multe delalii aici)

Pentru a verifica că proiectul funcționează, putem rula urmatoarea comandă. Aceasta va porni un server de development care își face refresh automat. Cu alte cuvinte, nu este necesar să reporniți serverul de fiecare dată cand faceți o modificare în cod.

$ python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).

November 11, 2016 - 15:50:53
Django version 1.10, using settings 'awp.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Așa cum puteți vedea și în output-ul comenzii rulate anterior, serverul îl accesați la adresa http://127.0.0.1:8000/. Aceasta este adresa implicită, dar poate fi schimbată oricand. Puteți vedea mai multe detalii aici.

Crearea aplicației

Fiecare aplicație pe care o scriem în Django este formată dintr-un pachet Python care respectă anumite convenții. Django folosește un utilitar care generează automat structura de bază a directorului unei aplicații.

Pentru a crea aplicația, asigurați-vă că sunteți în același director cu manage.py și rulați urmatoarea comandă.

$ python manage.py startapp socialapp

Aceasta va crea directorul socialapp. Astfel, structura proiectului va fi următoarea:

awp
├── awp
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── manage.py
└── socialapp
    ├── admin.py
    ├── apps.py
    ├── __init__.py
    ├── migrations
    │   └── __init__.py
    ├── models.py
    ├── tests.py
    └── views.py

Primul view

În fișierul socialapp/views.py scrieți următorul cod:

from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

Pentru ca acest view să fie apelat, trebuie să îl asociem cu un URL. În fișierul socialapp/urls.py scrieți următorul cod:

from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
]

Următorul pas este să includem url-urile aplicației noastre în cele ale proiectului. În fișierul awp/urls.py scrieți următorul cod:

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^polls/', include('polls.urls')),
    url(r'^admin/', admin.site.urls),
]

Primul model

În fișierul socialapp/models.py scrieți următorul cod:

from __future__ import unicode_literals

from django.db import models


class Status(models.Model):
    text = models.CharField(max_length=200)
    date_added = models.DateTimeField(auto_now_add=True)
    author = models.CharField(default="Eau de Web", max_length=50)

    def __unicode__(self):
        return '{} by {}'.format(self.text, self.author)

Pentru ca proiectul nostru să știe că aplicația socialapp este instalată, trebuie să adăugăm o referință către aceasta în secțiunea INSTALLED_APPS. Deschideți fișierul awp/settings.py și modificați-l astfel:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'socialapp',
]

Pentru a adăuga modelul nou creat în baza de date, rulați următoarele comenzi:

$ python manage.py makemigrations
$ python manage.py migrate

Primul template

Pentru a crea un template, modificați view-ul anterior din socialapp/views.py astfel:

from django.shortcuts import render

from . import models


def index(request):
    status_list = models.Status.objects.all()
    return render(request, 'socialapp/index.html',
                  {'status_list': status_list})

Creați un director templates în directorul socialapp. Django va cauta acolo template-urile. În directorul socialapp creați fișierul index.html (Calea către template-ul nostru va fi socialapp/templates/socialapp/index.html)

Un exemplu de template pentru view-ul creat mai sus este:

<html>
  <head>
    <title>My social network</title>
  </head>

  <body>
    <h1>Welcome to my social app</h1>
    
  </body>
</html>

Django Administration

Găsiti aici un tutorial detaliat care vă va ajuta să creați useri/superuseri, grupuri și permisiuni. De asemenea, puteți vedea cum să vă adăugați modelele în această interfață pentru a efectua operații CRUD pe ele.