首页 > 解决方案 > django pk 不适用于 pk 值高于 9

问题描述

嗨,我是 django 的新手,我现在想弄清楚一个小时,为什么主键(pk)不能正常工作以更新我的表单以获取高于 9 的值。它说当前路径 tache_app/TacheUpdate/15 没有不匹配任何这些。我已经多次检查 id 15 并且它确实存在。我的猜测是主键(pk)不适用于 9 以上的值。这是我的代码,请帮助解决。为我的英语道歉,它不是很好。我住在法国。

在我的 urls.py 文件中

"""Mettre les urls pour la tache app etc etc etc """
from django.urls import path 
from django.conf.urls import url
from . import views

urlpatterns = [
        path('tache_ajouter/' , views.tache_ajouter , name='tache_ajouter' ),
    url(r'^TacheCreate$', views.TacheCreate.as_view(), name='TacheCreate'),     

    url(r'^TacheUpdate/(?P<pk>\d)$', views.TacheUpdate.as_view(), name='TacheUpdate'),

    url(r'^TacheDelete/(?P<pk>\d)$', views.TacheDelete.as_view(), name='TacheDelete'),  

]


class TacheUpdate(UpdateView):
    """
     Creation d une view afin de modifier les 
    d une tache 
    """
    model = Tache 
    template_name = "tache_app/edition.html"
    fields = "__all__"
    from_class = TacheForm
    success_url = reverse_lazy('tache') 

如果你需要什么请问我。

标签: djangourlview

解决方案


\d则表达式部分匹配一个数字,而不是多个数字。为了匹配多个数字,您添加一个+量词。这个+量词意味着“一个或多个”,因此\d+意味着一个或多个数字。所以你的网址应该是这样的:

urlpatterns = [
    path('tache_ajouter/', views.tache_ajouter, name='tache_ajouter'),
    url(r'^TacheCreate$', views.TacheCreate.as_view(), name='TacheCreate'),
    url(r'^TacheUpdate/(?P<pk>\d+)$', views.TacheUpdate.as_view(), name='TacheUpdate'),
    url(r'^TacheDelete/(?P<pk>\d+)$', views.TacheDelete.as_view(), name='TacheDelete'),
]

推荐阅读