簡體   English   中英

django 中的反向 function 出錯。 無法匹配模式

[英]Error with reverse function in django. Can't match a pattern

我正在使用 Django 創建我的第一個網站。 在創建表單並將網站返回到剛剛創建的頁面的詳細信息頁面時,我在 /books/books/add/ Reverse for 'detail' 遇到了這個 NoReverseMatch 問題,關鍵字 arguments '{'pk': 39}' not found . 嘗試了 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> ,而不是pk

您可以嘗試像這樣構造 model:

class Books(models.Model):
    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 __str__(self):
        return self.name + '-' + self.author

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM