2016-03-19 2 views
0

Этот вопрос может показаться дублирующим и/или слишком скучным. Я уже прочитал this, this, this, this и this вопросы & ответы. Но я не смог найти решение, которое подходит для.Представленное представление Нет (не возвращается объект HttpResponse)

Я новичок в каркасе Django. Чтобы узнать это, я хочу создать простой блог. Когда пользователь щелкает Регистрация кнопку (после заполнения необходимых полей), следующее сообщение об ошибке бросили:

ValueError в/пользователь/регистрация/Вид user.views.register не возвращает объект HttpResponse. Вместо этого вместо него он вернул Нет.

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

В случае необходимости я могу разделить любое содержимое файлов.

Любые полезные комментарии или ответы будут оценены.

+1

Что возвращается вид, когда 'personal_info.is_valid()' это не так? –

+0

Что происходит, если personal_info недействителен? – snakecharmerb

+0

Я забыл поймать, что :) спасибо :) –

ответ

0

В соответствии if personal_info.is_valid():

если личная информация не является действительной, он будет возвращать None. (Не возвращает ничего)

добавить условие еще, потому что вы не обрабатываете случай.

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

Таким образом, вы никогда не пропустите случай возвращения значения.

Так Окончательный код должен выглядеть

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 Добро пожаловать, вы также можете отметить его как правильно :) –

Смежные вопросы