Django 2.3 Внутри get_absolute_url, реверс для 'post_detail' не найден - PullRequest
0 голосов
/ 30 марта 2020

Основной urls.py включает в себя: path ('', include ('page.urls', namespace = 'page'))

Page app urls.py

app_name = 'page'

urlpatterns = [
    path('', views.home, name='home'),  
    path('page/<slug:slug>/', views.page_detail, name='page_detail'),

]

Страница приложения models.py

    class Page(models.Model):
        .
        .
        .
         def __str__(self):
             return '{} by {} {}'.format(self.title, self.created, self.is_active)

         def get_absolute_url(self):
             return reverse("page_detail", kwargs= {"slug": self.slug })

In page app views.py:

    def home(request):

        pages = Page.objects.filter(is_active=1)

        context = {

            "pages":pages
        }

        return render(request,'page/home.html', context)

    def page_detail(request, slug):

        details = get_object_or_404(Page, slug=slug, is_active='1')

        return render(request,'page/details.html', {'details': details})


In the menu.html under templates/page:

    <nav class="collapse navbar-collapse bs-navbar-collapse navbar-right" role="navigation">
                <ul class="nav navbar-nav">
                    {% for obj in pages %}
                    <li><a href='{{obj.get_absolute_url}}'>{{ obj.title }}</a></li>
                    {% endfor %}

                </ul>
    </nav> 

Скажите, пожалуйста, почему я получаю: обратное значение для page_detail не найдено. 'page_detail' не является допустимой функцией представления или именем шаблона.

Но если я использую <li><a href='/page/{{obj.slug}}'>{{ obj.title }}</a></li> in menu.html в шаблонах / странице, он работает правильно. Get_absolute_url не работает должным образом. Где я делаю не так. Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 30 марта 2020
def get_absolute_url(self):
         return reverse("page:page_detail", kwargs= {"slug": self.slug })

вы также должны добавить имя приложения при обратном поиске URL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...