2016-03-19 23 views
0

この質問は重複しているように見えるかもしれません。私はすでにthisthisthisthisthisの質問&の回答を読んでいます。しかし、が私の問題であるに適合する解決策を見つけることができませんでした。ビューが返されませんでした。(HttpResponseオブジェクトは返されません)

私はDjangoフレームワークが初めてです。それを学ぶために私は簡単なブログを作成したい。ユーザーが(必要なフィールドを充填した後)登録ボタンをクリックすると、次のエラーがスローさ:

とValueErrorで/ユーザー/登録/ビューuser.views.registerはない リターンHttpResponseオブジェクトをしました。代わりにNoneを返しました。

views.py

def register(request): 
    """ 
    Registers new user. 
    """ 
    if request.POST: 
     if request.method == 'POST': 
      personal_info = UserFormModel(request.POST) 
      if personal_info.is_valid(): 
       email = personal_info.cleaned_data['email'] 
       username = personal_info.cleaned_data['username'] 
       if User.objects.filter(email=email).exists(): 
        return HttpResponse('email error') 
       elif User.objects.filter(username=username).exists(): 
        return HttpResponse('username error') 
       else: 
        return HttpResponse('saved') 
    else: 
     personal_info = UserFormModel() 
     return render_to_response('user/registration.html', 
          { 
           'title': 'Registration', 
           'username_error': 'Sorry, someone already has that username.', 
           'personal_info': personal_info, 
          }, 
          context_instance=RequestContext(request)) 

必要であれば、私は任意のファイルのコンテンツを共有することができます。

有用なコメントや回答があれば幸いです。あなたはケースを処理していないので、個人情報が有効でない場合、それはNoneを返します if personal_info.is_valid():

ラインで

+1

ようになっているはずですが)'真実ではないのですか? –

+0

personal_infoが有効でないとどうなりますか? – snakecharmerb

+0

私はそれをキャッチ忘れました:)ありがとう:) –

答えて

0

。(何も返さない)

は、他の条件を追加します。発生していないから、このような状況に対処するためのより良い方法の

if personal_info.is_valid(): 
    # code here 
else: 
    return HttpResponse('personal info provided not valid') 

一つのステータスメッセージ用の辞書を維持し、機能の開始時に初期化なり、代わりに複数で返すの単一の場所でのみ返すことです結果をresult_dictに格納します。

result_dict = {'status': False}

と常に機能

return HttpResponse(json.dumps(result_dict))

あなたが値を返す場合を見逃すことはありません。この道の終わりに戻ります。

最終的なコードは `personal_info.is_validとき(ビューのリターンを何

def register(request): 
    """ 
    Registers new user. 
    """ 
    result_dict = {'status': False} 
    if request.POST: 
     if request.method == 'POST': 
      personal_info = UserFormModel(request.POST) 
      if personal_info.is_valid(): 
       email = personal_info.cleaned_data['email'] 
       username = personal_info.cleaned_data['username'] 
       if User.objects.filter(email=email).exists(): 
        result_dict['message'] = 'email error' 
       elif User.objects.filter(username=username).exists(): 
        result_dict['message'] = 'username error' 
       else: 
        result_dict['message'] = 'saved' 
        result_dict['status'] = True 
     else: 
      result_dict['message'] = 'personal info provided not valid' 
    else: 
     personal_info = UserFormModel() 
     return render_to_response('user/registration.html', 
          { 
           'title': 'Registration', 
           'username_error': 'Sorry, someone already has that username.', 
           'personal_info': personal_info, 
          }, 
          context_instance=RequestContext(request)) 

    return HttpResponse(json.dumps(result_dict)) 
+0

フィードバックと、下の投票と一緒に答えの問題を愛するだろう、私にも役立つだろう:) –

+0

ありがとう。私の問題を解決するのに役立ちました。 –

+0

@MirjalalTalishinskiあなたも大丈夫です、あなたはそれを正しいものとしてマークすることもできます:) –

関連する問題