python - django 中的反向函数出错。无法匹配模式
问题描述
我正在使用 Django 创建我的第一个网站。在创建表单并将网站返回到刚刚创建的页面的详细信息页面时,我在 /books/books/add/ Reverse for 'detail' with keyword arguments '{'pk': 39}' not found 这个 NoReverseMatch 问题出现. 尝试了 1 种模式:['books/(?P[0-9]+)/$ 我已经尝试在我的 urls.py 文件中修复我的 URL,但是对于它来说是新手,我无法让它工作。
urls.py file
from django.conf.urls import url
from django.contrib import admin
from . import views
app_name = 'books'
URL patterns = [
url(r'^books/$', views.index, name='index'),
url(r'^$', views.index, name='index'),
url(r'^(?P<book_id>[0-9]+)/$', views.detail, name='detail'),
url(r'books/add/$',views.BookCreate.as_view(),name='book-add'),
]
model.py file
from django.db import models
# Create your models here.
from django.core.urlresolvers import reverse
class Books(models.Model):
def get_absolute_url(self):
return reverse('books:detail', kwargs={"pk":self.pk})
def __str__(self):
return self.name + '-' + self.author
name = models.CharField(max_length=100)
author = models.CharField(max_length=100)
price = models.CharField(max_length=100)
book_image = models.CharField(max_length=1000)
解决方案
将此方法更改为:
def get_absolute_url(self):
return reverse('books:detail', kwargs={"pk":self.pk})
至:
def get_absolute_url(self):
return reverse('books:detail', kwargs={"book_id":self.pk})
因为您<book_id>
在 urls 中使用,而不是pk
.
推荐阅读
- c# - 观察垃圾回收(C#、MacOS、Visual Studio)(终结器、析构器)
- javascript - .removeAttr() 不从选项卡中删除数据切换
- c++ - 如何从函数返回 const char**?
- java - 为什么 GSON 没有从 JSON 文件中检索所有值?
- python - 带有条件边界的正则表达式?
- c++ - C++ - cin 垃圾邮件终端
- php - 如何按此顺序构造日期此脚本的月日和年
- ruby-on-rails - 这句话有什么问题,我收到“无效日期”错误
- html - System.Data.SqlClient.SqlException:语法错误
- c - 创建动态库时如何解析符号?