Django上下文未渲染

2 投票
1 回答
3848 浏览
提问于 2025-04-18 10:33

我有一个用Django写的HTML模板。我想通过上下文把一个变量传递给这个模板。但是,当我渲染这个模板时,Django会用一个设置好的字符串填充那些引用这个变量的地方(我测试过了)。

这是相关的URL配置:

from django.conf.urls import patterns, url

from users import views

urlpatterns = patterns('',
    url(r'^$', views.users),
    url(r'(?P<pk>\d+)/$', views.userdetail),
)

这是它引用的视图:

from django.template import RequestContext, loader
...
def userdetail(request, pk):
    user = get_object_or_404(User, pk=pk)
    template = loader.get_template('users/userdetail.html')
    context = RequestContext(request, {'user': user})
    return HttpResponse(template.render(context))

我很确定这是因为在指定上下文时出现了语法错误,但我看了一个小时还是找不到问题。如果你觉得有必要,我可以提供更多代码。有没有人能帮我找出我的错误?

对有兴趣的人来说,模板如下:

{% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif%}

<h1> You are viewing the page for the individual user {{ user.name }} </h1>

    This user has created the following posts:

    {% for post in user.post_list %}
        <a href="/posts/{{ post.id }}/">{{ post.title }}</a></li>
    {% endfor %}

<p>
Created on {{ user.creation_date }}
</p>

1 个回答

2

原作者写道:

我的主管刚刚过来,很快就解决了这个问题。问题在于模板中有一些预定义的关键词。比如“user”就是其中一个关键词,所以Django(一个流行的网页框架)对我在上下文中传递{'user':user}感到不满。把它改成{'customuser':user}就避免了和Django的关键词冲突,从而解决了这个问题。

撰写回答