kurrodu
kurrodu

Reputation: 2188

How to pass dictionary of values when redirecting user to a url in django

Below is the code from views.py where I am using render_to_response to direct the user to done.html along with a dictionary of variables. But, I actually want to direct the user to a url /home_main/#signin_completeand pass the dictionary of variables that are callable. Can someone please suggest if there is a way of doing this ?

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))

EDIT

My requirement is to render a second page (signin_complete) from a multipage html (home_main.html). Currently, I am achieving this by redirecting the user with HttpResponseRedirect as shown below. But, I would also like to pass a callable dictionary that I can use in the second page of the multipage html.

Here is a link that gives more information of a multipage html under multipage template structure.

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

        return HttpResponseRedirect('/home_main/#signin_complete')

Below is the dictionary that I would like to pass to the second page (sign_complete) in the multi page html.

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

Upvotes: 1

Views: 1785

Answers (2)

Daniel Roseman
Daniel Roseman

Reputation: 599620

The session is the place to store data between requests.

# 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)

Upvotes: 2

mariodev
mariodev

Reputation: 15519

It would be much better if you would redirect request inside done() method, like the docs advises you to do.

This solves your issue as well, since you can define your own url to redirect to, there's related SO question of how to add hash tags when redirecting.

Upvotes: 0

Related Questions