Django
Struttura del progetto
Ricerca…
Deposito> Progetto> Sito / Conf
Per un progetto Django con requirements
e deployment tools
sotto il controllo del codice sorgente. Questo esempio si basa su concetti tratti dai due scoop di Django . Hanno pubblicato un modello :
repository/
docs/
.gitignore
project/
apps/
blog/
migrations/
static/ #( optional )
blog/
some.css
templates/ #( optional )
blog/
some.html
models.py
tests.py
admin.py
apps.py #( django 1.9 and later )
views.py
accounts/
#... ( same as blog )
search/
#... ( same as blog )
conf/
settings/
local.py
development.py
production.py
wsgi
urls.py
static/
templates/
deploy/
fabfile.py
requirements/
base.txt
local.txt
README
AUTHORS
LICENSE
Qui le apps
e le cartelle conf
contengono rispettivamente user created applications
e la core configuration folder
per il progetto.
static
cartelle static
e di templates
nella directory del project
contengono rispettivamente file statici e file html markup
che vengono utilizzati globalmente in tutto il progetto.
E tutte le cartelle di app blog
, accounts
e search
possono anche (principalmente) contenere cartelle static
e templates
.
Namespacing statico e file di modelli in applicazioni django
static
cartella static
e di templates
nelle app potrebbe anche contenere una cartella con il nome dell'app ex. blog
questa è una convenzione usata per prevenire l'inquinamento dello spazio dei nomi, quindi facciamo riferimento ai file come /blog/base.html
piuttosto che /base.html
che fornisce maggiore chiarezza sul file a cui stiamo facendo riferimento e mantiene lo spazio dei nomi.
Esempio: la cartella dei templates
all'interno del blog
e delle applicazioni di search
contiene un file con nome base.html
e quando si fa riferimento al file nelle views
l'applicazione viene confusa in quale file eseguire il rendering.
(Project Structure)
.../project/
apps/
blog/
templates/
base.html
search/
templates/
base.html
(blog/views.py)
def some_func(request):
return render(request, "/base.html")
(search/views.py)
def some_func(request):
return render(request, "/base.html")
## After creating a folder inside /blog/templates/(blog) ##
(Project Structure)
.../project/
apps/
blog/
templates/
blog/
base.html
search/
templates/
search/
base.html
(blog/views.py)
def some_func(request):
return render(request, "/blog/base.html")
(search/views.py)
def some_func(request):
return render(request, "/search/base.html")