-
Notifications
You must be signed in to change notification settings - Fork 2
Crearea primei aplicații Django
Î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:
- 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.
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>
{% for status in status_list %}
<h2>{{ status.text }}</h2>
by {{ status.author }}
at {{ status.date_added }}
{% endfor %}
</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.