如何访问和修改Django模板上下文变量

1 投票
1 回答
1252 浏览
提问于 2025-04-16 13:12

在我的urls.py文件中,我把网址accounts/login/指向登录模块,并且指定了我想用的模板:

url(r'^accounts/login/$', 'django.contrib.auth.views.login', {'template_name': 'templates/login.html'})

这样设置是没问题的,但我想改变next这个属性的值,它是用来指定用户成功登录后应该跳转到哪里。请问我该如何访问这些变量并打印它们的值,更重要的是,我该如何修改它们呢?

谢谢!

1 个回答

1

把网址指向一个视图:

(r'^accounts/login/', 'myproj.login.views.mylogin')

然后在你的视图代码中处理重定向:

def mylogin(request, **kwargs):
    if request.user.is_authenticated():
        if 'next_url' in request.session:
            url = request.session['next_url']
            del request.session['next_url']  # Cleaning next_url val
            return HttpResponseRedirect('/%s' % url)
        else:
            return HttpResponseRedirect('/')
    return login(request, **kwargs)

@csrf_protect
def login(request, template_name='registration/login.html'):
    """Displays the login form and handles the login action."""
    retval = django.contrib.auth.views.login(request, template_name)
    clear_session_data(request.session)
    return retval

撰写回答