Django:未定义的模板变量呈现为上下文转储

时间:2016-10-30 22:11:18

标签: python django templates

Django 1.10.1

我的模板使用了强制性标题'上下文变量和可选的注释'模板变量。

渲染{{title}}可以正常工作,但渲染{{note}}会导致呈现完整的模板上下文(调试视图的种类?),如果在上下文中没有定义注释。

我希望那是'注意'未在上下文中定义它将呈现空字符串,并且如果已定义则呈现变量的内容。

示例:

urls.py:

url(r'^test1', views.testview1),
url(r'^test2', views.testview2),

views.py:

def testview1(request):
    context = {'title': 'My title', 'note': 'my note'}
    return render(request, 'test_template.html', context)


def testview2(request):
    context = {'title': 'My title'}
    return render(request, 'test_template.html', context)

test_template.html:

<h2>{{ title }}</h2>
{{ note }}

testview1按预期呈现:

  

我的头衔

     

我的笔记

testview2呈现此意外的上下文转储:

  

我的头衔

     

[{&#39; False&#39;:False,&#39; None&#39;:None,&#39; True&#39;:True},   {u&#39; csrf_token&#39;:&lt; SimpleLazyObject:u&#39; ho7MGwEQ86eMVLmHZbDPYE8VLCo3aTAUTM0OAf7Pvr5E8exMKYDqNoTjQGmieLPu&#39;&gt;,   &#39;用户&#39;:&lt; SimpleLazyObject:&lt;用户:user1&gt;&gt;,   &#39;烫发&#39;:&lt; django.contrib.auth.context_processors.PermWrapper对象位于0x113826f50&gt;,   &#39; DEFAULT_MESSAGE_LEVELS&#39;:{&#39; DEBUG&#39;:10,&#39; INFO&#39;:20,&#39;警告&#39;:30,&#39; SUCCESS&#39 ;:25,&#39; ERROR&#39;:40},   &#39;消息&#39;:&lt; django.contrib.messages.storage.fallback.FallbackStorage对象位于0x11376b550&gt;,   你请求&#39;:&lt; WSGIRequest:GET&#39; / swingit / test2&#39;&gt;},{},{&#39; title&#39;:&#39;我的头衔&#39;}]

这是与模板相关的settings.py上下文:

DEBUG = True
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates'),
                 os.path.join(BASE_DIR, 'templates', 'allauth')],
        'APP_DIRS': True,
        'OPTIONS': {
            'string_if_invalid': '',
            'context_processors': [
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

这些python模块位于虚拟环境中:

Babel==2.3.4
BulkSMS==0.3
cGraph==0.1
diff-match-patch==20121119
Django==1.10.1
django-allauth==0.27.0
django-bootstrap-ui==0.2.0
django-bootstrap3==7.0.1
django-crispy-forms==1.6.0
django-debug-toolbar==1.5
django-extensions==1.7.4
django-import-export==0.5.1
django-mailjet==0.2.0
django-phonenumber-field==1.1.0
django-tag-parser==2.1
django-utils==0.0.2
dominate==2.1.17
funcsigs==1.0.2
graphviz==0.5.1
mailjet-rest==1.2.2
MarkupSafe==0.23
mock==2.0.0
nose==1.3.7
oauthlib==2.0.0
pbr==1.10.0
phonenumberslite==7.7.2
pydot2==1.0.33
pygraphviz==1.3.1
pyparsing==2.1.10
python-openid==2.2.5
pytz==2016.7
requests==2.11.1
requests-oauthlib==0.6.2
six==1.10.0
sqlparse==0.2.1
tablib==0.11.2

1 个答案:

答案 0 :(得分:0)

其中一个python包有本地更改。

所以这解决了这个问题:

pip install -r requirements.txt --ignore-installed