1
melaozhu OP 这样的URL
http://mydomain.com/login?next=/admin/staff 登录后不能跳转回 http://mydomain.com/admin/staff 没人在啊。。。 会不会是我的urls.py定义有问题 url( regex = r'^login$', view = LoginView.as_view(), name = 'login' ), 我是这样定义的。 |
2
aggron 2013-10-23 11:07:29 +08:00 1
已登录用户不显示登录表单,在get方法里面加
if request.user.is_authenticated(): return redirect('/') REDIRECT_FIELD_NAME 默认应该就是获取URL中的`next` parameter,按照你给的URL格式应该是没问题的,或许你看下LoginForm中的代码有没redirect之类的代码。 你贴的urls.py是全的吗,没看到/admin/staff相关的定义 |
3
melaozhu OP 不好意思,还有一部分没贴。
# urls.py urlpatterns = patterns('', url(r'^admin/staff', include('auth2.urls')), ) # auth2/urls.py urlpatterns = patterns('', url( regex = r'^$', view = StaffListView.as_view(), name = 'staff-list', ), ) 我现在就是没法获取到next后面的地址,我是这样定义的 from django.contrib.auth.forms import AuthenticationForm class LoginForm(AuthenticationForm): error_messages = {} username = {} password = {} 只是冲定义了这三个东西,其它函数未动,貌似AuthenticationForm中只没有redirect之类语句。 我现在怀疑get_success_url()函数中是否可以获取到REDIRECT_FIELD_NAME的值。 |
4
melaozhu OP @aggron 兄才
from django.core.urlresolvers import reverse def get(self, request, *args, **kwargs): self.set_test_cookie() if self.request.user.is_authenticated: return reverse('home') return super(LoginView, self).get(self, request, *args, **kwargs) 我加了这段后,报错了。。。 Exception Type: AttributeError Exception Value: 'str' object has no attribute 'has_header' |
5
aggron 2013-10-23 11:41:38 +08:00
reverse 返回的只是一个str类型的url
应该用return redirect(reverse('home')) |
7
aggron 2013-10-23 13:46:14 +08:00
BTW: is_authenticated是个方法,不是property,要用user.is_authenticated():
|
8
daoluan 2013-10-23 15:36:49 +08:00
重定向回去就好了. redirect
|