Django'阻止'标记名称'内容'出现不止一次

时间:2013-02-27 12:55:09

标签: django

我在制作应用时出现此错误,我认为问题位于我的login.html,因为它指向错误表。是因为我有2个{%block content%}它有冲突吗?谢谢你的帮助

TemplateSyntaxError at /login/

'block' tag with name 'content' appears more than once

Request Method:     GET
Request URL:    http://127.0.0.1:8000/login/
Django Version:     1.4.3
Exception Type:     TemplateSyntaxError
Exception Value:    

'block' tag with name 'content' appears more than once

Error during template rendering

In template C:\djcode\mysite\drinker\templates\login.html, error at line 21
'block' tag with name 'content' appears more than once
11  <div class="register_div">
12  {% if form.password.errors %}<p class="error">{{ form.password.errors }}</p>{%     endif %}
13  <p><label for="password"{% if form.password.errors %} class="error"{% endif %}>Password:</label></p>
14  <p>{{ form.password }}</p>
15  </div>
16  <p><input type="submit" alt="register" /></p>
17  </form>
18  <p>Forgot your password? <a href="/resetpassword/">Reset it!</a></p>
19  {% endblock %}
20  {% extends "base.html" %}
21  {% block content %}

我的login.html

 {% extends "base.html" %}
 {% block content %}
 <form action="" method="post">
 {% csrf_token %}
 {% if form.errors %}<p>Please correct the following fields:</p>{% endif %}
 <div class="register_div">
         {% if form.username.errors %}<p class="error">{{ form.username.errors }}</p>{% endif %}
         <p><label for="username"{% if form.username.errors %} class="error"{% endif %}>Username:</label></p>
         <p>{{ form.username }}</p>
 </div>
 <div class="register_div">
         {% if form.password.errors %}<p class="error">{{ form.password.errors }}</p>{% endif %}
         <p><label for="password"{% if form.password.errors %} class="error"{% endif %}>Password:</label></p>
         <p>{{ form.password }}</p>
 </div>
 <p><input type="submit" alt="register" /></p>
 </form>
 <p>Forgot your password? <a href="/resetpassword/">Reset it!</a></p>
 {% endblock %}

我还有一个链接到我的views.py

的追溯
    Traceback Switch to copy-and-paste view

    C:\Python26\Lib\site-packages\django\core\handlers\base.py in get_response

                            response = callback(request, *callback_args, **callback_kwargs)

    ...
    ▶ Local vars
    C:\djcode\mysite\drinker\views.py in LoginRequest

                        return render_to_response('login.html', context,     context_instance=RequestContext(request))

    ...
    ▶ Local vars 

4 个答案:

答案 0 :(得分:2)

是的,错误很明显:你有两个名为“content”的块。

说实话,我无法理解你在做什么,因为第二块看起来与第一块完全相同。您也不能拥有两个extends代码。

答案 1 :(得分:0)

您可以在后端执行您想做的事情,即:-Python。 例如,您可以执行以下操作:-

# views.py::
if something is True(any condition for that matter)
msg = "something"

else:
msg = "Something else"

# template, it is here -- index.html::
{% block title %}{{msg}}{% endblock title %}

答案 2 :(得分:0)

如果您想多次渲染任何变量。
在渲染文件时作为输入传递。
像这样:

from django.shortcuts import render

def a_function_to_render_file(request):
    return render(request, "my_file.html",
        {
            "data":"my_data"
        })

在 HTML 文件中:

{{ my_data }}
<b>
{{ my_data }}

答案 3 :(得分:0)

我认为有时错误代码可能有点直截了当,“我认为”。无论如何,我通过删除额外的行标记解决了这个问题,在本例中为 {% block content %} 行标记。