Chcem vytvoriť hlavnú stránku (main.html
), kde môžem nasmerovať každú aplikáciu a chcem ju vytvoriť base.html
ktorá bude základnou šablónou všetkých aplikácií jej rozšírením. To, čo som sa snažil urobiť, je ako nižšie;
my_project
├── app1
│ ├── migrations
│ ├── models.py
│ ├── static
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── app2
│ ├── migrations
│ ├── models.py
│ ├── static
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── my_project
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── db.sqlite3
├── main.css
├── main.html
├── base.html
├── manage.py
└── views.py
Ale nie som si istý, či je táto štruktúra správna. Prosím, dajte mi radu.
odpovede:
1 pre odpoveď č. 1Mali by ste radšej umiestniť svoje šablóny do adresára šablón v koreňovom umiestnení, ako aj do zodpovedajúcich aplikácií, a potom v nastaveniach uviesť svoje šablóny:
TEMPLATES = [
{
"BACKEND": "django.template.backends.django.DjangoTemplates",
"DIRS": ["templates"],
tiež nastaviť
STATICFILES_DIRS = (os.path.join(BASE_DIR, "static_files"),)
STATIC_ROOT = os.path.join(BASE_DIR, "static", )
STATIC_URL = "http://yourdomain.com/static/"
MEDIA_ROOT = "./media/"
MEDIA_URL = "/media/"
STATICFILES_DIRS = (
./static_files,
)
STATICFILES_FINDERS = [
"django.contrib.staticfiles.finders.FileSystemFinder",
"django.contrib.staticfiles.finders.AppDirectoriesFinder",
]
So the resulting structure is
yourproject+
|
+main.py
|
+templates+
| |
+ +base.html (this is checked last)
|
+static_files+
| |
| +css
| |
| +js
|
+media+
| |
| +images
|
+yourproject+
| |
| +urls.py
| |
| +wsgi.py
| |
| +settings.py
|
+yourapp+admin.py
|
+models.py
|
+views.py
|
+tests.py
|
+templates+
|
+base.html (this is checked first)
Týmto spôsobom Django skontroluje všetky šablónyadresárov vo vašich aplikáciách a potom sa použijú šablóny koreňových umiestnení, ak sa v aplikáciách nenachádzajú žiadne podradené šablóny na načítanie bázy.html a akýchkoľvek dedičných šablón. Umiestnenie šablón html do samostatného adresára vám pomôže udržať dizajn čistý a oddelený zo zdrojového kódu a konfiguračných súborov.