Î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
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:
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.
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
Î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),
]
Î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
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>
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.