如何在将用户重定向到django中的url时传递值的字典

时间:2013-11-20 02:16:05

标签: django django-templates django-views

以下是来自views.py的代码,其中我使用render_to_response将用户引导至done.html以及变量字典。但是,我实际上想要将用户引导到URL /home_main/#signin_complete并传递可调用的变量字典。有人可以建议是否有办法这样做?

def done(request):
    """Login complete view, displays user data"""
    scope = ' '.join(GooglePlusAuth.DEFAULT_SCOPE)

    return render_to_response('done.html', {
        'user': request.user,
        'plus_id': getattr(settings, 'SOCIAL_AUTH_GOOGLE_PLUS_KEY', None),
        'plus_scope': scope
    }, RequestContext(request))

修改

我的要求是从多页html(home_main.html)渲染第二页(signin_complete)。目前,我通过使用HttpResponseRedirect重定向用户来实现此目的,如下所示。但是,我还想传递一个可调用的字典,我可以在多页html的第二页中使用它。

这是一个link,它提供了多页面模板结构下多页html的更多信息。

def done(request):
        """Login complete view, displays user data"""
        scope = ' '.join(GooglePlusAuth.DEFAULT_SCOPE)

        return HttpResponseRedirect('/home_main/#signin_complete')

下面是我想在多页面html中传递给第二页(sign_complete)的字典。

            {
            'user': request.user,
            'plus_id': getattr(settings, 'SOCIAL_AUTH_GOOGLE_PLUS_KEY', None),
            'plus_scope': scope
            }

2 个答案:

答案 0 :(得分:2)

session是在请求之间存储数据的地方。

# in done():
request.session['dict_to_save'] = my_dict_to_save
return redirect('/new/url/to/redirect/to')

# in the new view:
values_from_session = request.session.pop('dict_to_save', None)

答案 1 :(得分:0)

如果您要在done()方法中重定向请求会更好,就像您要执行的文档advises一样。

这也解决了您的问题,因为您可以定义自己的网址以重定向到there's related SO question,了解重定向时如何添加哈希标记。