2017-07-19 2 views
0

Actuellement, je crée un site Web Django. J'ai créé une application.Le même nom de fichier dans différentes applications Django ouvre le même modèle

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

dans les deux url.py i créer le modèle d'URL url(r'^', views.index, name="index"), et le fichier url.py dans le projet contient url(r'^heatingControll/', include('heatingControll.urls')),.

Dans les deux vues, j'ajouter la fonction:

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

Si je comprends bien, Django ouvre le index.html du dossier app/template par l'exécution 127.0.0.1:8000/app et par l'exécution 127.0.0.1:8000 le index.html du dossier project/template.

Mais il exécute chaque fois le fichier app/templates/index.html.

Je crois fermement qu'il devrait être possible d'utiliser le même nom de répertoire dans les applications multiples.

Quel pourrait être mon problème?

+1

Vous êtes censé créer un dossier dans le dossier des modèles avec le nom de votre application. Dans ce dossier, vous mettez les modèles html. Dans la vue, vous les appelez 'appName/index.html'. voir ceci ou tout autre lien que vous pouvez trouver sur ce sujet http://www.revsys.com/blog/2014/nov/21/recommended-django-project-layout/ – hansTheFranz

Répondre

0

Non, ce n'est pas comme ça que ça fonctionne. Vous devez nommer les modèles, même s'ils se trouvent dans une application.

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

ou, il suffit de garder le fichier unique des modèles au niveau du projet, mais toujours utiliser les espaces de noms:

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

Quoi qu'il en soit, vous faites référence à présent le modèle comme "app/index.html".

Remarque, vous devez vraiment utiliser le raccourci render:

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

Notez également, ce n'est pas habituel d'avoir un views.py au niveau du projet. Normalement, ce serait dans une application.