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'),
这是我的 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'),