无法重定向到Django python中的某个视图

时间:2013-11-04 05:39:57

标签: python django

的AoA,    我试图重定向到某个视图,但未能这样做。

这是代码

views.py

def logout(request):
        c = {'username': 'Create Account', 'status': ''}
    c.update(csrf(request))
    response = render_to_response("home.html",c)
    response.delete_cookie('id')
    request.session['id'] = 'None'
    return redirect('/home/')

def home(request):
       #some code here 
       return render_to_response('blah blah')

urls.py

url(r'^ home / $','contacts.views.home_Page'),   url(r'^ logout / $','contacts.views.logout'),

上面的代码将我重定向到 - 让我们假设当前的URL(127.0.0.1/account) 它将我重定向到(127.0.0.1/account/home),但我想重定向到127.0.0.1/home 如何重定向到特定视图?

2 个答案:

答案 0 :(得分:2)

redirect(to[, permanent=False], *args, **kwargs)将HttpResponseRedirect返回到传递的参数的相应URL。您需要在视图函数中返回HttpResponseRedirect对象。

顺便说一下,你应该尽量避免在你的代码中使用硬编码网址,而应该使用视图名称。

e.g:

urls.py:

url(r'^home/$', home, name='home_view')
...

view.py:

def logout(request):
    ...
    redirect('home_view')

答案 1 :(得分:1)

django提供了一个你应该使用的内置logout

from django.shortcuts import redirect
from django.contrib.auth import logout

def log_out(request):
   logout(request)
   return redirect('home')

现在'home'可以是很多东西;但确保其指向正确位置的最简单方法是命名您的网址。所以在urls.py

url(r'home/$', home, name='home')