当我尝试使用我的“编辑”网址时,我不断收到此错误。
视图 to_do_list_app.views.edit 未返回 HttpResponse 对象。它返回 None 。
我的 url.py
urlpatterns = [
path('', views.todo, name='todo'),
path('delete/<job_id>', views.delete, name='delete'),
path('cross_off/<job_id>', views.cross_off, name='cross_off'),
path('uncross/<job_id>', views.uncross, name='uncross'),
path('edit/<job_id>', views.edit, name='edit'),
]
从 django.db 导入 models.py
class Jobs(models.Model):
# Relationships
to_do_owner = models.ForeignKey("auth.User", on_delete=models.SET_NULL, blank=True, null=True)
# Fields
item = models.CharField(max_length=200)
completed = models.BooleanField(default=False)
def __str__(self):
return self.item +' | ' + str(self.completed)
这是我的 veiws.py
from django.shortcuts import render, redirect
from .models import Jobs
from .forms import ListForm
from django.contrib import messages
from django.http import HttpResponseRedirect
from django.contrib.auth.decorators import login_required
def edit(request, job_id):
if request.method == 'POST':
item = Jobs.objects.get(pk=job_id)
form = ListForm(request.POST or None, instance=item)
if form.is_valid() and request.POST['item'] != '':
form.save()
messages.success(request, request.POST['item']+ ' er blevet redigeret i din opgave list')
return HttpResponseRedirect('todo')
else:
item =Jobs.objects.get(pk=job_id)
context = {'item': item}
return render(request, 'edit.html', context)
这里有我的模板 edith.html
<form class="d-flex" method="POST" action="{% url 'edit' item.id %}">
{% csrf_token %}
<input class="form-control me-2" type="search" placeholder="{{ item.item }}"
value="{{ item.item }}" aria-label="Search" name="item">
<input type="hidden" value="{{ user.username }}" name="job_owner">
<input type="hidden" value="{{ item.completed }}" name="completed">
<button class="btn btn-outline-secondary" type="submit">Rediger opgave</button>
</form>
self.check_response(response, callback) 的输出是:
<块引用>回调
<功能编辑在 0x7f07ac82b430>
回调参数
()
callback_kwargs
{'job_id':'5'}
中间件方法
<0x7f07ac89b760处
没有任何
自己
<函数编辑在 0x7f07ac82b430>
答案 0 :(得分:1)
你可以这样做:-
def edit(request, job_id):
if request.method == 'POST':
item = Jobs.objects.get(pk=job_id)
form = ListForm(request.POST or None, instance=item)
if form.is_valid() and request.POST['item'] != '':
form.save()
messages.success(request, request.POST['item']+ ' er blevet redigeret i din opgave list')
return HttpResponseRedirect('todo')
else:
item =Jobs.objects.get(pk=job_id)
context = {'item': item}
return render(request, 'edit.html', context)
我编辑的内容:-最后两行缩进