Как определить django шаблонов папок? - PullRequest
0 голосов
/ 15 апреля 2020

Я хочу построить свой проект с учетом html шаблонов, подобных этому:

├───app1
│   ├───...
│   └───...
├───app2
│   ├───...
│   └───...
├───project
│   ├───...
│   ├───templates
│   │   └───navbar.html
│   │   └───footer.html
│   │   └───sidebar.html
│   │   └───conbined.html
│   │   └───content_app1.html
│   │   └───content_app2.html

Причина в том, что я хочу разделить свой сайт на несколько частей, как показано ниже. Таким образом, в каждой папке приложения нет файлов html. Символ navbar, footer and sidebar всегда отображается, а content_appN.html может быть активирован соответствующим образом. conbined.html объединяет их всех.

enter image description here

Моя попытка (в settings.py):

PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))

TEMPLATE_DIRS = (
    os.path.join(PROJECT_ROOT, 'templates').replace('\\','/'),
)

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
)

В app1: views.py:

def app1_content(request):
    return render(request, 'templates/combined.html')

На самом деле я попробовал почти все методы, которые я мог найти в Интернете, но все еще не знаю, как это сделать. Пожалуйста, не смейтесь за эту идею, чтобы создать такой сайт. Может ли кто-нибудь дать мне несколько советов?

1 Ответ

2 голосов
/ 15 апреля 2020

Насколько я понимаю, у вас есть формулировка проблемы: вы хотите, чтобы ваш каталог шаблонов находился в определенной папке, и, по моему мнению, ваш файл manage.py находится на том же уровне, что и папка вашего проекта, поэтому я объясняю вам решение согласно этому только. так что для определения django папок шаблонов вам нужно сделать это в вашем settings.py, вам нужно установить его так: -

TEMPLATES_DIR = os.path.join(BASE_DIR, 'project','templates')

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [TEMPLATES_DIR,],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

Итак, вот объяснение Что я сделал, установил переменную TEMPLATES_DIR со ссылкой на базовый каталог, который будет брать путь к папке, где хранится manage.py вашего django проекта, сейчас я конкатенирую каталог проектов и шаблонов просто для навигации по точной структуре папок, которую вы сохранили для ваших шаблонов в вашем проекте ,

Надеюсь, вы нашли это полезным. если у вас есть какие-либо сомнения, я буду рад ответить на них.

Happy Coding. : -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...