Как заставить Django использовать папку шаблонов текущего приложения? - PullRequest
0 голосов
/ 23 января 2020

Сейчас у меня есть Django проект с тремя приложениями. В моем последнем приложении индекс. html, загруженный моим views.py, является индексом. html в папке шаблонов другого приложения. Обратите внимание, что это то, как он загружается, а не то, как я собираюсь его загрузить. Индекс. html в шаблонах, где определен соответствующий views.py, не используется. Что меня интересует, так это то, как я определяю свои настройки, чтобы использовать папку шаблонов для текущего каталога приложения. Это мой файл settings.py в отношении шаблонов:

TEMPLATES = [ 
    {   
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        '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',
            ],
        },
    },  
]

Это вызов индекса. html

def indexView(request):
    form = FriendForm()
    friends = Friend.objects.all()
    return render(request, "index1.html", {"form": form, "friends": friends})

1 Ответ

0 голосов
/ 23 января 2020

Хорошей практикой является то, что изнутри вашего urls.py из вашего приложения вы добавляете:

app_name = 'your_app_name' # Now, you can call this app from the {% url tag %}

И ваша структура шаблона должна содержать каталоги приложений, и когда вы хотите выполнить рендеринг в другой шаблон, который вы можете использовать:

return render(request, 'myApp1/index.html')
return render(request, 'myApp2/index.html')

Но помните, в вашей основной папке шаблонов, вам нужно добавить 2 каталога,

templates/myApp1/index.html, 

и

templates/myApp2/index.html

И наконец, вы добавили app_name в URL своих приложений? И после этого попробуйте первый или полный путь.

{% url 'myApp1:post_friend' %} or full path {% url 'myApp1/index.html' %}
...