对于具有多个按钮的Django表单,Chrome不起作用

时间:2012-09-18 04:26:13

标签: django django-forms django-templates django-views

我已经构建了一个Django表单,其中包含一个内容字段和三个按钮。我使用当前文章内容预填充该字段。该领域的目的是对帖子进行更改。

  • 按钮1 - 提交 - 将新内容保存到数据库。
  • 按钮2 - 预览 - 使用数据命中服务器,但将其放在a上 “预览”页面而不保存。此外,还会更新缓存中的更改,以便用户返回进行更多更改。
  • 按钮3 - 重置 - 重定向回同一页面,然后重定向到 进程清除缓存。

以下代码适用于Firefox / Opera,但不适用于Google Chrome。问题:在Chrome中,所有按钮都按钮1进行提交,而不是按照各自的功能进行操作。我很难弄清楚如何区分Chrome的按钮,以便服务器不会认为每个按钮都是“提交”。

我的观点看起来像这样(仅显示结构的快速摘要):

def change_article(request, articleid):
    # setup code

    if request.POST:

        if "submit" in request.POST:
            form = ArticleForm(request.POST)
            if form.is_valid():
            # calculations
            return render_to_response(#)

        elif "preview" in request.POST:
            form = PreviewForm(request.POST)
            if form.is_valid():
            # calculations
            return render_to_response(#)

        elif "reset" in request.POST:
            # clear cache
            return HttpResponseRedirect

    else:
       form = ArticleForm(initial={'article': form_text})
       return render_to_response(#)

模板中的表单代码如下:

<form action="" method="post"> {% csrf_token %}
<table>
{{ form.as_table }}
</table>
<input type="submit" value="Submit" class="btn-large btn-primary" name="submit">
<input type="submit" value="Preview" class="btn-large btn-primary" name="preview" >
<input type="submit" value="reset" class="btn-large btn-primary" name="reset" >
</form>

有关如何解决此问题的任何想法?令人不安的是,当Chrome差不多完成时Chrome就是导致麻烦的浏览器!

更新

使用Firefox request.POST看起来像:

这是由2.'创建的,'u'csrfmiddlewaretoken':[u'110570fc4625327c81f8bd8c50079866'],u'preview':[u'Preview']}&gt;

使用Chrome request.POST如下:

您好,这就是事情。'],u'csrfmiddlewaretoken':[u'zyvvC5mMZiYSV8SzKSbjx9DFxrrPpFJD'],你提交':[u'Submit']}&gt;

0 个答案:

没有答案