django пк не работает при значении пк выше 9 - PullRequest
1 голос
/ 25 марта 2020

Привет, я новичок в django, и сейчас я пытаюсь выяснить в течение часа, почему первичный ключ (pk) не работает правильно, чтобы обновить мою форму со значением выше 9. Это говорит, что Текущий путь, tache_app / TacheUpdate / 15, не соответствует ни одному из них. Я проверил множество раз идентификатор 15, и он существует. Я предполагаю, что первичный ключ (pk) не работает для значения выше 9. Вот мой код, пожалуйста, помогите разобраться. Извините за мой английский sh это не так хорошо. Я живу во Франции.

в моем файле 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') 

, если вам что-то нужно, пожалуйста, спросите меня.

Ответы [ 2 ]

0 голосов
/ 26 марта 2020

Поскольку вы, похоже, используете Django 2.x, рекомендуется использовать path () вместо och url (). У него более подробный синтаксис, который, как мне кажется, усложняет ошибки.

urlpatterns = [
    path('tache_ajouter/', views.tache_ajouter, name='tache_ajouter'),
    path('TacheCreate', views.TacheCreate.as_view(), name='TacheCreate'),
    path('TacheUpdate/<int:pk>', views.TacheUpdate.as_view(), name='TacheUpdate'),
    path('TacheDelete/<int:pk>', views.TacheDelete.as_view(), name='TacheDelete'),
]
0 голосов
/ 25 марта 2020

Часть регулярного выражения \d соответствует одному ди git, а не нескольким. Чтобы сопоставить несколько цифр, вы добавляете квантификатор +. Этот квантификатор + означает «одна или несколько», следовательно, \d+ означает одну или несколько цифр. Таким образом, ваши URL должны выглядеть так:

urlpatterns = [
    path('tache_ajouter/', views.tache_ajouter, name='tache_ajouter'),
    url(r'^TacheCreate$', views.TacheCreate.as_view(), name='TacheCreate'),
    url(r'^TacheUpdate/(?P<pk><b>\d+</b>)$', views.TacheUpdate.as_view(), name='TacheUpdate'),
    url(r'^TacheDelete/(?P<pk><b>\d+</b>)$', views.TacheDelete.as_view(), name='TacheDelete'),
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...