如何在django模板中渲染变量?

alv*_*003 4 python django django-templates django-views

我的目标是在HTML页面中动态编写一些图像URL.网址存储在数据库中.

为此,首先我尝试在模板中渲染一个简单的变量.阅读文档和其他资源,应该分3个步骤:

对于配置:在settings.py中

TEMPLATES = [
{
    'OPTIONS': {
        'debug': DEBUG,
        'context_processors': [
            …
            'django.template.context_processors.request',
            'django.template.context_processors.debug',
            'django.template.context_processors.i18n',
            'django.template.context_processors.media',
            'django.template.context_processors.static',
            'django.template.context_processors.tz',
            'django.contrib.messages.context_processors.messages',            ],
    },
},
Run Code Online (Sandbox Code Playgroud)

]

模板中的变量名称:在MyHTMLFile.html中是foo

…
<td>MyLabel</td><td><p>{{ foo }}</p></td><td>-----------</td>
…
Run Code Online (Sandbox Code Playgroud)

在view.py中,其中一行

myvar1 ="BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
context = {foo: myvar1,}

return render_to_response("MyHTMLFile.html", context, context_instance = RequestContext(request) )
return render(request, 'MyHTMLFile.html', {foo: myvar1})
return render_to_response("MyHTMLFile.html", context , context_instance=RequestContext(request) )
return render(request, 'MyHTMLFile.html', context)
Run Code Online (Sandbox Code Playgroud)

html页面渲染得很好,但html表中没有数据.

你有好主意吗 ?我很想知道我误解了什么.

关于versio,我使用的是:python:Python 2.7.13 django:1.10.5

谢谢

e4c*_*4c5 6

context = {foo: myvar1,}
Run Code Online (Sandbox Code Playgroud)

这应该给你一个NameError除非你有一个名字的变量,foo在这种情况下它可能会或可能不会持有一个字符串foo.简而言之,您没有将正确的数据发送到模板.它应该是

context = {'foo': myvar1,}
Run Code Online (Sandbox Code Playgroud)

然后

return render_to_response("MyHTMLFile.html", context, context_instance = RequestContext(request) )
# Below this line code will not be executed.
return render(request, 'MyHTMLFile.html', {foo: myvar1})
return render_to_response("MyHTMLFile.html", context , context_instance=RequestContext(request) )
return render(request, 'MyHTMLFile.html', context)
Run Code Online (Sandbox Code Playgroud)

请注意,return关键字从函数返回.之后的代码不会被执行.

最后不推荐使用render_to_response.render是当前使用的功能.