Ошибка с обратной функцией в Django. Не может соответствовать шаблону - PullRequest
1 голос
/ 30 сентября 2019

Я создаю свой первый сайт, используя Django. При создании формы и возврате веб-сайта на страницу сведений только что созданной страницы я столкнулся с этой проблемой NoReverseMatch по адресу / books / books / add / Reverse для «detail» с аргументами ключевого слова «{'pk': 39}» не найден,Попробован 1 шаблон (ов): ['books / (? P [0-9] +) / $ Я попытался исправить свой URL в файле urls.py, но, будучи новичком в этом, я не смог заставить его работать.

  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)

Ответы [ 2 ]

2 голосов
/ 30 сентября 2019

Измените этот метод с:

def get_absolute_url(self):
    return reverse('books:detail', kwargs={"pk":self.pk})

На:

def get_absolute_url(self):
    return reverse('books:detail', kwargs={<b>"book_id"</b>:self.pk})

Поскольку вы используете <book_id> в URL, а не pk.

0 голосов
/ 30 сентября 2019

Вы можете попытаться структурировать модель следующим образом:

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
...