在Django模板中检查一个或多个回发的正确方法是什么?

时间:2013-08-28 02:38:55

标签: python django django-templates

首先,检查Django模板中的回发是正确的方法:

{% if request.POST %}
    <div id="elementThatShouldBeInTheDOMIfPostBack">
    </div>
{% endif %}

第二,有没有一种优雅的方法可以确定N是否是第N回发,即由于验证错误?

1 个答案:

答案 0 :(得分:1)

通常,将任何逻辑包含在django模板中都是不好的做法。 django中的模板仅用于表示由视图函数计算/处理的内容。您应该在视图功能中执行此操作,例如。使用会话:

#----views.py------

from django.shortcuts import render
from forms import MyForm

def someview(request):
    form = MyForm()

    if not 'postbacks' in request.session:
        request.sesson['postbacks'] = {}
    if request.path not in request.sesson['postbacks']:
        request.sesson['postbacks'][request.path] = 1

    if request.method == 'POST':
        form = MyForm(request.POST)

        if not form.is_valid():
            request.sesson['postbacks'][request.path] += 1
        else:
            request.sesson['postbacks'][request.path] = 1


    return render(request,
                  'myapp/tamplate.html',
                  {'form': form, 
                   'postback': request.sesson['postbacks'][request.path]})

然后在您的模板上使用:

{{ postback }}

干杯!如果您认为这有用,请不要忘记向上投票;)