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")