首页 > 解决方案 > 未找到带有参数“(1,)”的“更新”的反向操作。尝试了 1 种模式:['Manager/update/$']

问题描述

在 home.html 中创建编辑按钮后,我一直收到此错误,不知道如何解决。

视图.py

def siteUpdate(request, id_):
site=get_object_or_404(Site_data,id=id_)
if request.POST=="POST":
    form=SiteForm(request.POST,instance=site)
    if form.is_valid():
        form.log_name=request.user
        form.save()
        return redirect('Manager:home.html')
else:
    form=SiteForm(instance=site)
    site = {

        'form':form
    }
    return render(request,'Manager/siteform.html',sie)

模型.py

class Site_data(models.Model):
log_name = models.ForeignKey(User, on_delete=models.CASCADE, default=1)
site_name = models.CharField(max_length=200)
site_url = models.CharField(max_length=200)
site_login = models.CharField(max_length=200, unique=True)
password = models.CharField(max_length=200)

网址.py

app_name='Manager'

urlpatterns = [

path('', views.home, name='home'),
path('create/', views.siteCreate, name='create'),
path('update/', views.siteUpdate, name='update')

]

主页.html

{% for site in sites %}
<td>{{site.site_name}}</td>
<td>{{site.site_url}}</td>
<td>{{site.site_login}}</td>
<td>{{site.site_password}}</td>
<td><a href="{% url 'Manager:update' site.id %}"><button 
type="button">Edit</button></a></td>
{% endfor %}

感谢帮助。

标签: pythondjangodjango-templatesdjango-views

解决方案


您实际上使用 ID 调用更新视图site.id<a href="{% url 'Manager:update' site.id %}">但是您的路径 URL 不包含 ID。

path('update/', views.siteUpdate, name='update')

看到你的观点def siteUpdate(request, id_):正确的称呼方法如下:

它会变成:

path('update/<int:id_>', views.siteUpdate, name='update')

推荐阅读