1
try: 
   user = User.objects.create_user(_username, _email, pwd)
except IntegrityError, e:
   fail = e.message
   return render_to_response('register.html',{'reg_fail':fail},context_instance=RequestContext(request)) 

我有这个代码,一旦我捕捉到 IntegrityError,我就会收到这个错误: 当前事务被中止,命令被忽略,直到事务块结束

为什么是这样?如果我删除该context_instance部分,那么我将再次获得该页面,但没有任何媒体访问权限。我被卡住了,我只想注册一个用户,或者如果完整性错误,然后渲染到带有错误消息的注册页面。

顺便说一句:我正在使用 django1.4 和 postgresql。并且User是 django 的 auth 用户

4

2 回答 2

1

随着user_create您开始交易,再次执行此操作会导致未提交交易的错误。您必须按照以下方式提交(结束)您的交易user_create

try: 
   user = User.objects.create_user(_username, _email, pwd)
   user.full_clean()
   user.save()
except IntegrityError, e:
   fail = e.message
   return render_to_response('register.html',{'reg_fail':fail},context_instance=RequestContext(request))
于 2013-08-03T19:41:25.527 回答
0

您使用的是默认数据库还是情侣数据库。建议使用 db_manager() 来指定数据库。db_manager() 返回绑定到您指定的数据库的管理器副本。

User.objects.db_manager(’new_users’).create_user(...)
于 2013-08-03T20:41:57.243 回答