我想登录后创建用户。但我使用的是formwizard,当我尝试时遇到一个错误“global name'request'is not defined”。在
这是我的视图.py在
class ProfilWizard(SessionWizardView):
template_name = "gestionProfil/profil-step1.html"
def done(self, form_list, **kwargs):
form_data = process_form_data(form_list)
return render_to_response('gestionProfil/profil.html', {'form_data': form_data})
def process_form_data(form_list):
form_data = [form.cleaned_data for form in form_list]
username = form_data[0]['username']
password = form_data[0]['password']
email = form_data[0]['email']
user = User.objects.create_user(username, email, password)
user.first_name = form_data[1]['firstName']
user.last_name = form_data[1]['lastName']
user.save()
user = authenticate(username = username, password = password)
if user:
login(request, user)
return form_data
那么在创建用户之后我应该如何登录呢?在
编辑: 在完成用户777466 my建议的编辑后视图.py现在是:
^{pr2}$表单期间和之后的输出是:
[13/Nov/2013 08:39:12] "GET /gestionProfil/createNew/ HTTP/1.1" 200 4639
[13/Nov/2013 08:39:22] "POST /gestionProfil/createNew/ HTTP/1.1" 200 5085
[13/Nov/2013 08:39:40] "POST /gestionProfil/createNew/ HTTP/1.1" 200 4601
[13/Nov/2013 08:39:40] "GET /captcha/image/c9adfbd5b6984ed094fdc7c4607acfb4d915d037/ HTTP/1.1" 200 4611
/usr/local/lib/python2.7/dist-packages/django/db/models/fields/init.py:827: RuntimeWarning: DateTimeField received a naive datetime (2013-11-13 08:39:45.847325) while time zone support is active. RuntimeWarning)
/usr/local/lib/python2.7/dist-packages/django/db/models/fields/init.py:827: RuntimeWarning: DateTimeField received a naive datetime (2013-11-13 08:39:45.864404) while time zone support is active. RuntimeWarning)
[13/Nov/2013 08:39:47] "POST /gestionProfil/createNew/ HTTP/1.1" 200 3704
编辑2: 我删除了我的数据库并创建了一个新的syncdb,现在身份验证正在工作。在
您的请求未通过process_form_data方法传递。在
解决方案1-将用户记录在process_form_data方法中:
解决方案2-在done方法中记录用户:
^{pr2}$最近,由于密码字段的原因,authenticate()没有在项目中工作。在这种情况下,简单地说:
^{3}$所以你应该有这样的东西:
相关问题 更多 >
编程相关推荐