簡體   English   中英

我不知道如何從Django視圖中引用我的模板

[英]I can't figure out how to refer to my template from a Django view

我是Django新手,無法弄清楚模板的路徑應該是什么樣。 我項目的目錄樹如下所示:

blog
blog/blog
blog/blog/__init__.pyc
blog/blog/wsgi.pyc
blog/blog/urls.py
blog/blog/urls.pyc
blog/blog/wsgi.py
blog/blog/__init__.py
blog/blog/settings.py
blog/blog/settings.pyc
blog/home
blog/home/views.py
blog/home/templates
blog/home/templates/home
blog/home/templates/home/main.html
blog/home/__init__.pyc
blog/home/urls.py
blog/home/urls.pyc
blog/home/models.py
blog/home/tests.py
blog/home/__init__.py
blog/home/views.pyc
blog/manage.py

這是我的觀點(來自blog/home/view.py ):

from django.shortcuts import render_to_response

def home(request):
    return render_to_response("home/main.html", {"name" : "maxwell"})

我的settings.py文件的編輯過的副本可以在這里找到: http : //pastebin.com/UMTepK9j

最后,這是我瀏覽至127.0.0.1:8000時遇到的錯誤:

TemplateDoesNotExist at /home/main.html

誰能告訴我我對render_to_response應該是什么樣的路徑?

您settings.py中的TEMPLATE_DIRS應該指向template文件夾。

應該是這樣的:

TEMPLATE_DIRS = (
    '../home/templates'
)

那應該工作。

注意:不建議使用相對路徑。 您應該在settings.py

import os
settings_dir = os.path.dirname(__file__)
PROJECT_ROOT = os.path.abspath(os.path.dirname(settings_dir))

...

TEMPLATE_DIRS = (
    os.path.join(PROJECT_ROOT, '../home/templates/'),
)

另外,您在調用render_to_response而不將其傳遞給RequestContext 這樣,您的模板將缺少一些對您的項目重要的變量,例如user 最好這樣稱呼它:

return render_to_response(
    "home/main.html",
    context_instance=RequestContext(
        request,
        {'name':'maxwell'}
    )
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM