[英]Why am I getting no reverse match error in django 3.2?
我正在制作一個簡單的待辦事項列表應用程序,但在添加刪除按鈕時,我收到了錯誤消息。 我在 inte.net 上嘗試了很多搜索但無法解決問題,可能是因為我是 django 的新手。所以,您的幫助將非常重要。
urls.py(應用程序):
from django.conf.urls import url
from django.urls import path
from . import views
urlpatterns=[
path('',views.home,name='home'),
url('delete/<str:id>', views.delete_data,name='deldata'),
]
意見.py:
from django.shortcuts import get_object_or_404, render,redirect
from todo.models import value
from django.http import HttpResponseRedirect
# Create your views here.
from .forms import TitleForm
from django.urls import reverse
def home(request):
values=value.objects.all()
form=TitleForm
if request.method=='POST':
form=TitleForm(request.POST)
if form.is_valid():
form.save()
return redirect('/')
else:
form=TitleForm()
return render(request,'home.html',{'values':values,'form':form})
#delete
def delete_data(request, id ):
ggwp=value.objects.get(id=id)
if request.method=="POST":
ggwp=value.objects.get(id=id)
ggwp.delete()
return HttpResponseRedirect(reverse('deldata', kwargs={'id':id}))
context={'ggwp':ggwp}
return render(request,'/',context)
模型.py:
from django.db import models
# Create your models here.
class value(models.Model):
task=models.CharField(max_length=200)
complete=models.BooleanField(default=False)
created=models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.task
home.html(只有一個 html 頁):
<h3>TO DO LIST</h3>
<form method="POST" action="\">
{% csrf_token %}
{{form.task}} <input type='submit' name='add' value="add" >
</form>
{% for val in values %}
{{val}}
<form action="{% url 'deldata' val.id %}" method="POST" class="in-line">
{% csrf_token %}
<input type="submit" value="Delete" >
</form>
{% endfor %}
追溯:
raise NoReverseMatch(msg)
django.urls.exceptions.NoReverseMatch: Reverse for 'deldata' with arguments '(15,)' not
found. 1 pattern(s) tried: ['delete/<str:id>']
[05/Oct/2021 22:37:17] "GET / HTTP/1.1" 500 127858
這是我的第一個問題,如果我在寫問題時犯了任何錯誤,我深表歉意。
您正在使用path(…)
[Django-doc]語法和url(…)
function [Django-doc] 。 你應該在這里使用path(…)
:
urlpatterns=[
path('',views.home,name='home'),
# ↓ path, not url
path('delete/<str:id>/', views.delete_data,name='deldata'),
]
通常路徑也以斜杠結尾,雖然這不是必需的,但很常見。
注意:從django-3.1開始,
url(…)
[Django-doc]已棄用,取而代之的是re_path(…)
[Django-doc] 。 此外,路徑轉換器還引入了一種新的路徑語法:為此你可以使用path(…)
[Django-doc] 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.