2015-03-28 2 views
-1

Проблема возникает, когда я отправляю форму. Несколько дней назад это сработало, я ничего не изменил в этом коде, но теперь он терпит неудачу. Возможно ли, что другой модуль делает эту часть кода разбитой? Traceback:Вид не возвратил объект HttpResponse. Вместо этого вместо него он вернул Нет. Метод запроса: POST

Окружающая среда:

Request Method: POST 
Request URL: http://127.0.0.1:8000/users/new/ 

Django Version: 1.7.3 
Python Version: 3.4.0 
Installed Applications: 
('django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'mojblog', 
'users') 
Installed Middleware: 
('django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.clickjacking.XFrameOptionsMiddleware') 


Traceback: 
File "/home/marta/django/djangovenv/lib/python3.4/site-packages/django/core/handlers/base.py" in get_response 
    130.         % (callback.__module__, view_name)) 

Exception Type: ValueError at /users/new/ 
Exception Value: The view users.views.create didn't return an HttpResponse object. It returned None instead. 

Код:

from django.shortcuts import render, redirect 
from django.http import HttpResponse 
from users.forms import UserCreationForm 
from django.contrib.auth.models import User 
from users.models import Profile 


def test(request): 
    return HttpResponse('users!') 


def create(request): 
    if request.method =="POST": 
     new_user=User() 
     form = UserCreationForm(request.POST, instance=new_user) 
     if form.is_valid(): 
      new_user=form.save(commit=False) 
      new_user.is_active=False 
      new_user.save() 
      return redirect("users:new") 

    else: 
     form = UserCreationForm() 
     return render(request, 'users/create.html', {'form1': form}) 


    # else: 
    # return HttpResponse("something")   

def activate(request, key): 

    profile=Profile.objects.get(secret=key) 
    user=profile.user 
    user.is_active=True 
    user.save() 



    return render(request, 'users/activate.html', {}) 
+0

Вы сказали, что 'HttpResponse (« что-то »)' не работает .?if да, это на 'else' состоянии' POST'. Так что, если 'POST', он не будет выполнен. – itzMEonTV

ответ

3

В create зрения, если запрос является POST, но форма не является действительным, код ничего не вернуть.

Вместо того, чтобы иметь отдельный блок GET, вы должны использовать стандартную схему:

if request.method =="POST": 
    form = ... 
    if form.is_valid(): 
     ... 
     return redirect(...) 
else: 
    form = ... 
return render(request, 'users/create.html', {'form1': form}) 

В этом случае окончательное возвращение улавливает тот случай, и снова делает форму, так что он отображает ошибку.

+0

Я попытался исправить это таким образом, он все еще показывает ту же ошибку. – meowz

+0

Показать ваш точный обновленный код (как отредактировать вопрос) и полную трассировку. –

+0

Я только что редактировал вопрос. – meowz

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