我应该在这里使用HttpResponseRedirect吗?

乔希·韦根

我正在使用Django教程进行Tango,并且已经成功完成了这些教程,但是我在官方Django Polls教程中注意到了以下内容:

def vote(request, question_id):
p = get_object_or_404(Question, pk=question_id)
try:
    selected_choice = p.choice_set.get(pk=request.POST['choice'])
except (KeyError, Choice.DoesNotExist):
    # Redisplay the question voting form.
    return render(request, 'polls/detail.html', {
        'question': p,
        'error_message': "You didn't select a choice.",
    })
else:
    selected_choice.votes += 1
    selected_choice.save()
    # Always return an HttpResponseRedirect after successfully dealing
    # with POST data. This prevents data from being posted twice if a
    # user hits the Back button.
    return HttpResponseRedirect(reverse('polls:results', args=(p.id,)))

这里要注意的部分是“在成功处理POST数据后始终返回HttpResponseRedirect”。但是,在Tango with Django教程中:

def add_page(request, category_name_url):
context = RequestContext(request)

category_name = decode_url(category_name_url)

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

    if form.is_valid():
        page = form.save(commit=False)

        try:
            cat = Category.objects.get(name=category_name)
            page.category = cat
        except Category.DoesNotExist:
            return render_to_response('rango/add_category.html', {}, context)

        page.views = 0
        page.save()

        return category(request, category_name_url)
    else:
        print(form.errors)
else:
    form = PageForm()

return render_to_response('rango/add_page.html',
                         {'category_name_url': category_name_url,
                          'category_name'    : category_name,
                          'form'             : form}, context)

注意尽管使用了POST数据,但是缺少HttpResponseRedirect。我不知道这是否正确?

我在这里看过:Django HttpResponseRedirect

此处:Django:HttpResponseRedirect无法正常工作

此处:Django HttpResponseRedirect与render_to_response-如何获取登录表单以按照我需要的方式进行操作

另外,这里:使用HttpResponseRedirect的Django表单重定向

最后在这里:Django:HttpResponse vs HttpResponseRedirect vs render_to_response有什么区别

我仍然不完全了解如何使用HttpResponseRedirect。请帮忙。

在此先感谢任何回应。

丹尼密索姆

这是防止用户在初始POST请求已在服务器端处理后重新提交表单的常见做法。

如果您在处理POST请求后不使用HttpResponseRedirect,那么后果可能是您无意中将多个重复的行插入数据库或多次发送确认电子邮件等。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我应该在这里使用原始指针吗?

来自分类Dev

我应该在这里使用dynamic_cast吗?

来自分类Dev

我应该在这里使用什么而不是ExecuteScalar?

来自分类Dev

我应该在这里使用哪种类型的演员表?

来自分类Dev

我应该在这里使用Interlocked.Exchange还是标准写就足够了?

来自分类Dev

git refs / heads是子目录安全吗?在这里,还是应该在其他地方?

来自分类Dev

“curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -”我们应该在这里添加一些密钥吗?

来自分类Dev

我可以在这里使用.select(&)方法吗?

来自分类Dev

我可以在这里使用.select(&)方法吗?

来自分类Dev

我不能在这里使用graphshortestpath函数吗?

来自分类Dev

DAOManager-应该在这里还是在特定的DAO类中完成对象验证?

来自分类Dev

在这种情况下,我们应该在所有地方都使用noexcept吗?

来自分类Dev

我应该在使用throw时使用throw吗?

来自分类Dev

我应该在嵌套块中使用weakSelf吗?

来自分类Dev

我应该在调度块中使用“ weakSelf”吗?

来自分类Dev

我应该在GraphQL中使用列表(数组)吗?

来自分类Dev

我应该在for in结构中使用var吗?

来自分类Dev

我应该在main(){}中使用#include语句吗?

来自分类Dev

我应该在Wordpress中使用Options -Indexes吗?

来自分类Dev

我应该在Java中使用Clone方法吗?

来自分类Dev

我应该在Spark SQL中使用registerDataFrameAsTable吗?

来自分类Dev

我应该在Swift中使用Cocoa绑定吗?

来自分类Dev

我应该在BehaviorSubject中使用asObservable吗?

来自分类Dev

我应该在TDD中使用lambda吗?

来自分类Dev

我应该在main(){}中使用#include语句吗?

来自分类Dev

我应该在 Kotlin 的界面中使用属性吗?

来自分类Dev

在这里,我应该为Android上下文使用什么?

来自分类Dev

我对async / await的用法在这里正确吗?

来自分类Dev

我可以在这里避免模板递归吗?

Related 相关文章

  1. 1

    我应该在这里使用原始指针吗?

  2. 2

    我应该在这里使用dynamic_cast吗?

  3. 3

    我应该在这里使用什么而不是ExecuteScalar?

  4. 4

    我应该在这里使用哪种类型的演员表?

  5. 5

    我应该在这里使用Interlocked.Exchange还是标准写就足够了?

  6. 6

    git refs / heads是子目录安全吗?在这里,还是应该在其他地方?

  7. 7

    “curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -”我们应该在这里添加一些密钥吗?

  8. 8

    我可以在这里使用.select(&)方法吗?

  9. 9

    我可以在这里使用.select(&)方法吗?

  10. 10

    我不能在这里使用graphshortestpath函数吗?

  11. 11

    DAOManager-应该在这里还是在特定的DAO类中完成对象验证?

  12. 12

    在这种情况下,我们应该在所有地方都使用noexcept吗?

  13. 13

    我应该在使用throw时使用throw吗?

  14. 14

    我应该在嵌套块中使用weakSelf吗?

  15. 15

    我应该在调度块中使用“ weakSelf”吗?

  16. 16

    我应该在GraphQL中使用列表(数组)吗?

  17. 17

    我应该在for in结构中使用var吗?

  18. 18

    我应该在main(){}中使用#include语句吗?

  19. 19

    我应该在Wordpress中使用Options -Indexes吗?

  20. 20

    我应该在Java中使用Clone方法吗?

  21. 21

    我应该在Spark SQL中使用registerDataFrameAsTable吗?

  22. 22

    我应该在Swift中使用Cocoa绑定吗?

  23. 23

    我应该在BehaviorSubject中使用asObservable吗?

  24. 24

    我应该在TDD中使用lambda吗?

  25. 25

    我应该在main(){}中使用#include语句吗?

  26. 26

    我应该在 Kotlin 的界面中使用属性吗?

  27. 27

    在这里,我应该为Android上下文使用什么?

  28. 28

    我对async / await的用法在这里正确吗?

  29. 29

    我可以在这里避免模板递归吗?

热门标签

归档