Одно и то же имя файла в разных приложениях Django открывает один и тот же шаблон

В настоящее время я создаю сайт Django. Я создал одно приложение.

project
--app
----templates
------index.html
----url.py
----views.py
--project
----templates
------index.html
----url.py
----views.py

в обоих url.py я создаю шаблон URL-адреса url(r'^', views.index, name="index"),, а файл url.py в проекте содержит url(r'^heatingControll/', include('heatingControll.urls')),.

В обоих представлениях я добавляю функцию:

def index(request):
    template = loader.get_template('index.html')
    context = {}
    return HttpResponse(template.render(context, request))

Как я понимаю, Django откроет index.html из папки app/template при запуске 127.0.0.1:8000/app, а при запуске 127.0.0.1:8000 index.html из папки project/template.

Но он запускается каждый раз, когда файл app/templates/index.html.

Я твердо верю, что можно использовать одно и то же имя каталога в серверных приложениях.

В чем может быть моя проблема?


person michael-mammut    schedule 19.07.2017    source источник
comment
вы должны создать папку внутри папки шаблонов с названием вашего приложения. В эту папку вы кладете html шаблоны. В представлении вы называете их appName/index.html. см. эту или любую другую ссылку, которую вы можете найти по этой теме revsys.com/blog/2014/nov/21/recommended-django-project-layout   -  person hansTheFranz    schedule 19.07.2017


Ответы (1)


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

--app
----templates
------app
--------index.html

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

--project
----templates
------index.html
------app
--------index.html

В любом случае теперь вы ссылаетесь на шаблон как "app/index.html".

Обратите внимание, вам действительно следует использовать ярлык render:

def index(request):
    context = {}
    return render(request, 'app/index.html', context)

Также обратите внимание, что файл views.py на уровне проекта не является обычным явлением. Обычно это было бы внутри приложения.

person Daniel Roseman    schedule 19.07.2017