Django: ValueError at / "Представление To_do_list_app.views.home не возвращало объект HttpResponse. Вместо этого он возвращал None." - PullRequest
0 голосов
/ 05 декабря 2018

Пожалуйста, я новичок, если я не очень хорошо задал вопрос, дайте мне знать.

Я работаю над приложением To-Do List.

В любое время яПри добавлении новой задачи и времени в форму в моем веб-приложении и отправке я получаю следующую ошибку:

ValueError at / Представление To_do_list_app.views.home не возвращало объект HttpResponse.Вместо этого он вернул None.

Ниже находится мой файл views.py

from django.http import HttpResponse
from django.shortcuts import render,redirect

from .forms import ListForm
from .models import List

def home(request):
    if request.method == "POST":
        form = ListForm(request.POST or None )
        if form.is_valid():
            form.save()
            act = List.objects.all
            context = {
                "act":act
            }
            return render(request,"home.html",context)
    else:
         act = List.objects.all
         context = {
              "act":act
         }
         return render(request,"home.html",context) 

Здесь также находится мой файл forms.py

from django import forms
from .models import List

class ListForm(forms.ModelForm):
    class Meta:
        model = List
        fields = "__all__"

Вот мой models.pyfile

from django.db import models
class List(models.Model):
    activity = models.CharField(max_length=200,primary_key=True)
    completed = models.BooleanField(default=False)
    time = models.DateTimeField()

    def __str__(self):
        return self.activity 

Это скрипт home.html (только html-тег формы)

<form class="form-inline my-2 my-lg-0"   method="POST">
{% csrf_token %}
    <input class="form-control mr-sm-2"  type="text" placeholder="Add New 
     Task" name="activity">
     <input type = "datetime-local" name = "time" >
     <button class = "btn btn-primary my-2 my-sm-0" type="submit">Add New Task</button>
 </form>

1 Ответ

0 голосов
/ 05 декабря 2018

Я полностью интегрировал ваш код в свою среду, тщательно изучил ваш код и протестировал несколько вещей.Если вы измените код вашего views.py на следующий, я думаю, это решит вашу проблему:

from django.shortcuts import render
from .forms import ListForm
from .models import List


def index(request):
    act = ''
    if request.method == "POST":
        form = ListForm(request.POST or None)
        if form.is_valid():
            form.save()
            act = List.objects.all
            return render(request, 'myApp/home.html', {"act": act})
    else:
        act = List.objects.all
    return render(request, 'myApp/home.html', {"act": act})

резюме: (Вы должны были создать глобальную переменную в методе index (или домашнем методе).) и установите его в пустую строку. Также вам не нужно использовать контекстную переменную, вы также можете сделать это встроенным способом, это будет стоить вам меньше кода. И последнее, но не менее важное: вам нужно было превзойти последнеевозвратите один раз, потому что это реальный возврат метода, в противном случае метод дает только if-структуру с возвратом ..)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...