2011-12-02 5 views
2

登録しようとしたのに登録が失敗したときにメッセージを返すことができます。上記の仕事の当然のDjangoでの登録エラーをどのようにキャッチしますか?

try: 
    user = User.objects.create_user(username, email, password) 
    except User.DoesNotExist 
    print "aaaa" 

    try: 
    user = User.objects.create_user(username, email, password) 
    except IntegrityError 
    print "aaaa" 

、どちら: 私は、次の方法の全てを試してみました。どうすれば適切に例外をスローできますか?

+0

登録が失敗する原因だろうか? –

+0

フォームを 'clean'メソッドで実行し、' ValidationErrors'を呼び出すと、フォームがリロードされたときにエラーメッセージがユーザに表示されます。 –

答えて

0

は、ここに私のソリューションです:

try: 
    user = User.objects.get(username=new_username) 
    # ERROR! user already exists! 
    # if you're using a form you could do: 
    # raise forms.ValidationError('Already exists a user with this username!')   
except User.DoesNotExist: 
    # We're good!, lets create the user 
    user = User.objects.create_user(username, email, password) 
0

The Messages Frameworkを使用することをおすすめします。

また、私はDoesNotExistを投げるユーザーを作成することは想像できません。全体のアイデアは、ユーザーが存在しないということです。それがスローされると、重大な問題が発生します。

メッセージフレームワークのデフォルトのバックエンドはセッションに対してメッセージを保存することです(ユーザーはログインしていないため登録できません)ので、他のセッションの1つを調べることをお勧めしますバックエンド。私はいくつかの時間前に同じ問題を抱えていた

関連する問題