我无法解决为什么身份验证在此注册视图中无效。我之所以这么说,是因为用户正在进入数据库并且它正在重定向到下一个所需页面(具有login_required装饰器),但随后它会重定向回登录页面。 Authenticate使用给定的值返回shell中的新用户。我也在这里调试和粘贴:http://dpaste.org/J1HZ5 /出了什么问题?
def register(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
new_user = form.save()
new_user = authenticate(username = request.POST['username'],
password = request.POST['password1'])
login(request, new_user)
context = RequestContext(request)
context['user_id'] = new_user.id
context['new_user'] = new_user
url = '/user/%s/' % new_user.id
return HttpResponseRedirect(url)
else:
form = UserCreationForm()
return render_to_response("registration/register.html", {'form': form},
context_instance=RequestContext(request))
urls.py:
urlpatterns = patterns('',
# Examples:
url(r'^$', 'crewcal.views.index', name='home'),
# url(r'^ssc/', include('ssc.foo.urls')),
url(r'^events/(?P<event_id>\d+)/$', 'crewcal.views.event'),
url(r'^events/new/$', 'crewcal.views.new_event', name='new_event'),
url(r'^commit/$', 'crewcal.views.commit'),
url(r'^user/(?P<user_id>\d+)/$', user, name='user'),
url(r'^users/$', 'crewcal.views.users'),
url(r'^register/$', register, name='join'),
url(r'^login/$', 'django.contrib.auth.views.login'),
url(r'^logout/$', logout, {'next_page': '/'}, name='logout'),
url(r'^log_in/$', log_in, name='log_in'),
# Uncomment the admin/doc line below to enable admin documentation:
# url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
url(r'^admin/', include(admin.site.urls)),
)
由于
答案 0 :(得分:0)
您安装了django会话中间件吗?
答案 1 :(得分:0)
您可能希望发布您的UserCreationForm代码,但我注意到的一件事是您正在运行authenticate(...)
调用,但实际上并未检查其结果然后重定向。查看Django源代码,有一个内置的身份验证表单(django.contrib.forms.AuthenticationForm
),如果authenticate()
调用不是none,它会验证结果,并且用户是活动的,如果没有,则会引发一个形式错误。
答案 2 :(得分:0)
你的问题在于这一行:
url(r'^user/(?P<user_id>\d+)/$', user, name='user'),
确保user
是有效的观点。
答案 3 :(得分:0)
您的密码字段是password1
还是password
?
def register(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
new_user = form.save()
new_user = authenticate(username = request.POST['username'],
password = request.POST['password1']) # here?
login(request, new_user)
# rest of the code...