django - 如何实现两步发布机制

时间:2015-08-07 17:49:59

标签: python django web

我是网络开发和django的新手,所以也许这是一个noob问题。

我想做以下事情:

  1. 要求用户填写表格并提交。
  2. 然后,解析并格式化内容并将其显示给用户以让他验证。
  3. 用户可以接受结果或返回上一个视图,更新数据并重新发送。
  4. 这是我能想到的:

    views.py

    def add_content(request):
        if request.method == 'POST':
            form = AddContentForm(request.POST)
            if form.is_valid():
                content = form.save(commit=False)
                return verify_content(request, content)
        else:
            form = AddContentForm()
        return render(request, 'myapp/add_content.html', {'form' : form})
    
    def verify_content(request, content):
        return render(request, 'myapp/verify_content.html', {'content' : content})
    

    verify_content模板显然会包含两个按钮('back','ok'),但我不知道如何将内容对象传递给视图以将其保存在db中,或者将其发送回以前的从那里查看。我应该使用js吗?我可以只使用服务器端代码吗?

    也许我的整个逻辑都是错的。我应该在验证之前将对象保存在数据库中,然后在需要时将其删除(听起来很难看)?实现这个的好方法是什么?

    提前感谢您的时间。

2 个答案:

答案 0 :(得分:3)

您可以使用users session

request.session['content'] = content

并且在用户应该验证其输入的视图中执行:

content = request.session['content']

和voilá你得到了2个观点之间的内容。

Django还通过保存服务器端或签名cookie来确保用户无法修改数据。

答案 1 :(得分:1)

我会在add_content视图中使用commit = True保存表单,并将向模型添加经过验证的字段或其他内容。然后,您可以将pk作为GET参数附加到链接,这将使您返回到验证的add_content视图。您可以从request.GET dict。

中提取参数