2017-07-19 8 views
0

現在、私はDjangoのウェブサイトを作成しています。私は1つのアプリを作成しました。私は、URLパターンurl(r'^', views.index, name="index"),と、プロジェクト内のurl.pyファイルがurl(r'^heatingControll/', include('heatingControll.urls')),が含まれて作成し、両方のurl.pyでdifferenの同じファイル名Djangoのアプリケーションは同じテンプレートを開きます

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

。私が理解したようDjangoの意志が実行127.0.0.1:8000/appによってapp/templateフォルダからindex.htmlを開き、実行127.0.0.1:8000により、

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

:私は機能を追加し、両方のビューで

project/templateフォルダのindex.html

しかし、それはapp/templates/index.htmlファイルごとに実行されます。

私は、サーバーアプリで同じディレクトリ名を使用することが可能であることを強く信じています。

何か問題がありますか?

+1

あなたはあなたのアプリの名前でテンプレートフォルダの中にフォルダを作るはずです。このフォルダにはhtmlテンプレートを入れます。ビューでは、それらを 'appName/index.html'と呼びます。このトピックまたはそのトピックで見つけることができるその他のリンクを参照してください。http://www.revsys.com/blog/2014/nov/21/recommended-django-project-layout/ – hansTheFranz

答えて

0

いいえ、それは動作しません。テンプレート内にアプリがある場合でも、テンプレートのネームスペースを設定する必要があります。

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

または、単に1つのプロジェクトレベルのテンプレートファイルを保持し、まだ名前空間を使用します。

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

いずれかの方法で、あなたが今"app/index.html"としてテンプレートを参照。

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

また、それは、プロジェクトレベルのviews.pyを持っている通常ではありません、注意してください。

注意、あなたは本当にrenderショートカットを使用する必要があります。通常これはアプリ内にあります。

関連する問題