Django:获取模板的错误

时间:2012-04-01 20:57:38

标签: python django templates

我是Django的初学者。现在,我遇到了获取模板的问题。我网页的上下文只包含杂乱的代码...

这是照片/ views.py:

from django.template import loader, Context
from django.http import HttpResponse
from final.photo.models import Image, Audio

def List(request):
    posts = Image.objects.all()
    t = loader.get_template("list.html")
    return HttpResponse(t, { 'posts': posts })

这是照片/ urls.py:

from django.conf.urls.defaults import *
from final.photo.views import List

urlpatterns = patterns('',
    url(r'^$', List),
)

这是list.html :(某些代码无法在网页上看到)

<pre>

<title>So Easy! - Scene List</title>

<h1>So Easy! Learn Chinese</h1>

{% block content %}
{% endblock %}

我希望有人能帮助我解决它!谢谢!

2 个答案:

答案 0 :(得分:1)

尝试将您的观点更改为以下内容:

def List(request):
    posts = Image.objects.all()

    context = RequestContext(request, {
         'posts': posts,
    })

    return render_to_response('list.html', context)

另外,请检查您的settings.py是否包含以下内容:

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
)

最后,您还需要更改list.html模板,以便在模板中使用{{posts.some_image_attribute}}来使用您传递的帖子变量。

答案 1 :(得分:0)

首先:您使用的是哪个版本的django? Django 1.3添加了View Classes,它使事情变得更容易。

考虑到你还在使用Django 1.2:

  1. 您必须在settings.py:

    设置模板文件夹

    TEMPLATE_DIRS =(     #在这里放置字符串,例如“/ home / html / django_templates”或“C:/ www / django / templates”。     #始终使用正斜杠,即使在Windows上也是如此。     #不要忘记使用绝对路径,而不是相对路径。    “/绝对/路径/到/你/模板/文件夹”, )

  2. 此外,您还需要在list.html中添加代码段:

    {%block content%}

    {%对于帖子中的项目%}      {%endfor%} {%endblock%}

  3. 建议为您的模板创建一个base.html。执行此操作后,添加{%extends“base.html”%}作为list.html的第一行

  4. 您的视图函数的返回行应为: 返回render_to_response('list.html',{'posts':posts})