请,我是新手,如果我问得不好,请告诉我。
我正在使用待办事项列表应用程序。
任何时候,我都会在Web应用程序上的表单中添加新任务和时间并提交,然后出现以下错误:
ValueError位于/ 视图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.py文件
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>
答案 0 :(得分:0)
我已将您的代码完全集成到我的环境中,仔细检查了代码并测试了一些内容。如果您将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})
resume :(您必须在index-method(或home方法)中创建一个全局变量,并将其设置为空字符串。此外,您实际上并不需要使用上下文变量,也可以在内联方式,它将减少您的代码花费。最后但并非最不重要的一点是,您必须花费一次最后的返回值,因为那是该方法的真正返回值。否则,该方法仅给出带有返回值的if-结构。