3

私は Django を初めて使用し、urls.py および views.py ドキュメントを構成しようとしています。これはおそらく非常に単純な問題ですが、作成した index.html ファイルを localhost/index が指すように urls.py および views.py ドキュメントを設定することはできません。私は Django Project のチュートリアルを忠実に実行し、多くのバリエーションを試しましたが、これは私には合いませんでした。どんな助けでも大歓迎です!

index.html ファイルは mysite/templates/index.html にあります。

私のフォルダ構成はこんな感じです...

 mysite/
      mysite/
           __init__.py
           settings.py
           urls.py
           wsgi.py
      app/
           __init__.py
           admin.py
           models.py
           tests.py
           urls.py
           views.py
      templates/
           css
           img
           js
           index.html

私のviews.pyには以下が含まれています:

 from django.http import HttpResponse
 from django.shortcuts import render_to_response
 from django.template import Context, loader
 from django.http import Http404

 def index(request):
     return render(request, "templates/index.html")

更新: 私のフォルダー構造は次のようになりました。

 mysite/
      mysite/
           __init__.py
           settings.py
           urls.py
           wsgi.py
           templates/
                     index.html
      app/
           __init__.py
           admin.py
           models.py
           tests.py
           urls.py
           views.py
      static/
           css
           img     
           js
4

2 に答える 2

3

TEMPLATE_DIRSinの設定に加えてsettings.py:

import os

ROOT_PATH = os.path.dirname(__file__)

TEMPLATE_DIRS = (    
    os.path.join(ROOT_PATH, 'templates'),
)

mysite/urls.py

urlpatterns = patterns('',
    url(r'^$', include('app.urls', namespace='app'), name='app'),
)

アプリ/urls.py

urlpatterns = patterns('app.views',
    url(r'^$', 'index', name='index'),
)

views.pyコードをそのまま変更templates/index.htmlするindex.htmlと、テンプレートは次のようになります。

mysite/mysite/templates/index.html

別の注意としてcssjsおよびimgフォルダーは、フォルダーなどの別の場所に配置するのが最適ですmysite/static

于 2012-12-23T16:13:01.337 に答える
2

でテンプレートパスを定義しましたかTEMPLATE_DIRS

settings.py

# at start add this
import os, sys

abspath = lambda *p: os.path.abspath(os.path.join(*p))

PROJECT_ROOT = abspath(os.path.dirname(__file__))
sys.path.insert(0, PROJECT_ROOT)

TEMPLATE_DIRS = (
    abspath(PROJECT_ROOT, 'templates'), # this will point to mysite/mysite/templates
)

次に、テンプレートフォルダをに移動しますmysite > mysite > templates

return render(request, "templates/index.html")次に、このようにする代わりにreturn render(request, "index.html")。これは機能するはずです。

ディレクトリ構造は次のようになります。

mysite/
      mysite/
          __init__.py
          settings.py
          urls.py
          wsgi.py

          templates/
              index.html
          static/
              css/
              js/
          app/
               __init__.py
               admin.py
               models.py
               tests.py
               urls.py
               views.py
于 2012-12-23T16:04:43.320 に答える