Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Django(第一个应用程序)找不到页面(404)_Python_Django - Fatal编程技术网

Python 使用Django(第一个应用程序)找不到页面(404)

Python 使用Django(第一个应用程序)找不到页面(404),python,django,Python,Django,我正在开发我的第一个django应用程序,我是一个编程新手,有时我真的不知道哪里有错误,教程和文档也帮不了我 错误是这样的: 现在,我为视图编写了代码: def update(request, id): cliente = get_object_or_404(Cliente, id=id) if request.method == 'GET': form = clienteForm(instance=cliente) return redire

我正在开发我的第一个django应用程序,我是一个编程新手,有时我真的不知道哪里有错误,教程和文档也帮不了我

错误是这样的:

现在,我为视图编写了代码:

def update(request, id):
    cliente = get_object_or_404(Cliente, id=id)

    if request.method == 'GET':
        form = clienteForm(instance=cliente)
        return redirect("/clientepag/", id=id)

    else:
        form = clienteForm(request.POST, instance=cliente)

        if form.is_valid():
            form.save()
            return redirect("/clientepag/", id=id)
        else:
            form = clienteForm()
            return redirect("/clientepag/", id=id)


def clientepag(request, id):
    cliente = Cliente.objects.get(id=id)
    return render(request, 'clientepag.html', {'cliente': cliente}) 
我试图让我的更新函数将我重定向到clientepag/id,但我不明白为什么我的clientepag函数没有得到我从更新中发送的id,数据库正在更新,我验证了这一点,但是clientepag没有得到我从更新中发送的id,我不知道是否是更新没有发送id,或者是那些没有得到或拒绝它的客户

我已经验证了update函数在form.save()行之后仍然具有id

我的路径列表:

from django.contrib import admin
from django.urls import path
from clientesapp import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.home),
    path('clnt/', views.clnt),
    path('view/', views.view),
    path('clientepag/<int:id>', views.clientepag),
    path('edit/<int:id>', views.edit),
    path('delete/<int:id>', views.delete),
    path('update/<int:id>', views.update)
]
来自django.contrib导入管理
从django.url导入路径
从客户机导入视图
URL模式=[
路径('admin/',admin.site.url),
路径(“”,视图。主页),
路径('clnt/',views.clnt),
路径('view/',views.view),
路径('clientepag/',views.clientepag),
路径('edit/',views.edit),
路径('delete/',views.delete),
路径('update/',views.update)
]

我知道答案一定很琐碎,但我真的无法理解错误可能在哪里。

看来您的问题在于重定向:

return redirect("/clientepag/", id=id)
当您将URI(即,
“/clientepag/”
)传递到
redirect()
时,Django不会解析它,这意味着您传递给它的kwargs(
id=id
)将被忽略

解决方案是从
urlpatterns
传递视图名或路径名

例如,要在URL.py中命名路径:

path('clientepag/<int:id>', views.clientepag, name='clientepag'),

我认为问题在于代码中的返回重定向(“/clientepag/”,id=id),因为这里的id被忽略,因为您使用的是硬编码的url值,而不是下面的选项

在url.py文件中为clientepag url定义名称参数这是一个很好的做法,也有助于避免在代码中硬编码url:

将url更新为:

path('clientepag/<int:id>', views.clientepag, name='clientepag'),
return redirect(reverse('clientepag', kwargs = {
                'id': form.instance.id
            }))
有关重定向的更多选项,请参阅文档:

return redirect(reverse('clientepag', kwargs = {
                'id': form.instance.id
            }))