ValueError - 以 10 为底的 int() 的无效文字:'add' 由 Django URL 引起

ValueError - Invalid literal for int() with base 10: 'add' caused by Django URLs

这是我的 urls.py 代码,

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

app_name = 'stories'

urlpatterns = [
    path('', views.IndexView.as_view(), name='index'),
    path('<pk>', views.DetailView.as_view(), name='detail'),
  #  path('<story_id>/ratings', views.rating, name='rating'),
    path('add', views.CreateStory.as_view(), name='add-story'),
] 

单击 link、

时出现上述错误
 <li><a href="{% url 'stories:add-story' %}">Click me</a></li>

我的 views.py 文件包括以下内容,

from django.views import generic
from django.views.generic.edit import CreateView, UpdateView, DeleteView
from .models import Story

class CreateStory(CreateView):
    model = Story
    fields = [' story_title', 'story_content', 'story_rating']

您的 URL /add/ 正在由详细视图处理,并给出 ValueError 因为 add 不是整数主键。

您可以更改两件事情,其中​​一件应该可以解决问题。

首先,将 add-story URL 模式移动到 detail 上方,以便 /add/ 首先与 add-story URL 模式匹配。

其次,将组更改为 <int:pk> 以告诉 Django pk 应该是一个整数,这样它就不会匹配 'add'.

这样的字符串
path('add', views.CreateStory.as_view(), name='add-story'),
path('<int:pk>', views.DetailView.as_view(), name='detail'),