表单提交Django后显示警报

时间:2013-09-10 20:37:05

标签: django django-forms django-views

我想在提交表单后显示一个提示框。

当用户首次访问该页面时,该框将被隐藏,并在提交时显示“新类别已创建”或“类别已存在”。

我想我知道我可以在模板中执行此操作,但我不确定如何将变量传递到重定向模板中。

以下是视图。有什么想法我能做到这一点吗?

我很感激反馈。

@login_required
@locationed
def manage_cat_subcat(request, location):

    form = AddCategory()

    if request.method == 'POST':
        form = AddCategory(request.POST)
        if form.is_valid():
            submitted_cat_name = form.cleaned_data['category_name']

            _, was_created = Category.objects.get_or_create(name=submitted_cat_name)

            return HttpResponseRedirect(reverse('manage_cat_subcat', args=(location.slug,)))

    return render(request, 'inventory/manage_cat_subcat.html', {'location': location, 'form': form})

2 个答案:

答案 0 :(得分:3)

答案 1 :(得分:0)

看起来您正在谈论基于提交特定信息的用户呈现对话框。如果是这样,我强烈建议在字段失去焦点后使用JQuery拉取类别字段的值,然后通过AJAX调用立即将该类别信息传递给视图文件中的专用方法。根据响应,您将显示相应的对话框。所以在你的views.py中会有类似的东西:

    @render_json
    def ajax_category_check(request){
      if request.method == 'POST' and 'category_name' in request.POST:           
         #insert your code that checks new or existing categories

         #if the category exists...
         return {'exists': True}

      return {'exists': False}
    }

AJAX的一个优点是,它可以减轻让表单提交/浏览器页面刷新的负担,从而使用户体验更顺畅。

另一方面,如果您在提交表单之前只是简单地显示警告对话框,请截取表单提交并使用JQuery显示对话框:

    $('form').click(function(event){
        $('#dialog').show();

        /* after a delay or after dialog confirmation, etc... */
        $('form').submit();
    });