2013-08-03 4 views
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 부분을 삭제하면 페이지가 다시 표시되지만 미디어 액세스가 없습니다. 내가 막혔어, 난 그냥 사용자를 등록하거나 integrityError면 오류 메시지와 함께 페이지를 등록하는 렌더링.

by : 저는 django1.4와 postgresql을 사용하고 있습니다.

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)) 

답변

1

, 이것은 다시하지 최선을 다하고 transaction.You의 오류가 발생할 다음과 같이 user_create 후 (끝) 트랜잭션을 커밋 한 일이다 당신은 기본 데이터베이스 또는 커플 데이터베이스를 사용합니다. db_manager()를 사용하여 데이터베이스를 지정하는 것이 좋습니다. db_manager()는 지정한 데이터베이스에 바인드 된 관리자의 복사본을 반환합니다.

User.objects.db_manager(’new_users’).create_user(...) 
+0

오, 제 생각에''create_user''는 자동으로 저장됩니까? – doniyor

+0

아니요. create_user를 호출하면 User 객체 만 만들고 full_clean은 데이터의 유효성을 검사하고 저장은 트랜잭션 커밋입니다. – adamr

+0

https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.UserManager.create_user 여기를보십시오 – doniyor

0

은 다음과 같습니다과 User 장고의 인증 사용자는 트랜잭션을 시작 user_create