2011-03-08 101 views
1

在我的urls.py,我将网址映射账户/登录/到登录模块,用的模板的引用我想使用:如何访问和修改Django的模板上下文变量

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

这工作正常,但我想更改next属性的值,该属性指定用户在成功登录后应该重定向的位置。我如何访问这些变量并打印它们的值,更重要的是,我如何修改它们?

谢谢!

+1

哪一部分Django文档的你实际阅读?尝试阅读http://docs.djangoproject.com/en/1.2/ref/templates/api/#django.template.Context,然后更新您的问题以更具体。 – 2011-03-08 01:54:14

+0

culov,你正试图在你的urls.py中做太多。你不应该在那里指定模板。 – dappawit 2011-03-08 05:24:05

回答

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