处理Django POST表单,然后重定向到传递参数的新视图

时间:2014-03-15 07:47:51

标签: django django-forms django-views

我有一个在Django中处理POST表单的视图。我想对这些信息做一些验证。然后,使用表单中的数据重定向到视图。我不想将此信息保留在URL中。这样做的最佳方式是什么?

感谢。

2 个答案:

答案 0 :(得分:1)

<强>更新

如果您想在另一个视图中处理来自一个视图的某些数据,您可以执行以下操作:

def process_view(request, username):
    ''' This is the view where you want to process the username '''
    # process the username ...
    return something

def login_view(request):
    ''' Main login form through which data is submitted '''
    if request.method == 'POST':
        username = request.POST['username'] # the username submitted via form
        # do something ...
        # call the process_view below
        return process_view(request, username)

但是,如果您要 登录 该用户,则需要在该用户的浏览器上设置身份验证Cookie。设置Cookie还允许您在任何所需的视图中处理 用户名

以下是设置Cookie的方法:

def login_view(request):
    if request.method == 'POST':
        username = request.POST['username']

        # set the cookie below
        request.session['username'] = username

        return something

现在,如果您想在任何其他视图中访问用户名,请执行以下操作:

def some_view(request):
    username = request.session['username']
    # do something ...
    return something

我建议您使用第二种方法,即设置Cookie 方法,因为它比从另一个视图调用视图更有效。

答案 1 :(得分:0)

您是否可以在视图结尾处使用POST数据调用其他视图?

或使用会话(或cookie)存储帖子数据? https://docs.djangoproject.com/en/dev/topics/http/sessions/

否则请参阅Response.Redirect with POST instead of Get?