NoReverseMatch位于//,反向表示“找不到”不是有效的视图函数或模式名称

2024-04-20 05:44:33 发布

您现在位置:Python中文网/ 问答频道 /正文

NoReverseMatch位于//,反向表示“找不到”不是有效的视图函数或模式名。在

作为Django开发下Mozilla开发挑战的一部分,该站点的其余部分工作正常,但是当试图访问借来的图书并以图书管理员身份登录的页面时,我得到了上述错误

视图.py

class LoanedBooksAllListView(PermissionRequiredMixin, generic.ListView):
"""Generic class-based view listing all books on loan. Only visible to users with can_mark_returned permission."""
model = BookInstance
permission_required = 'catalog.can_mark_returned'
template_name = 'catalog/bookinstance_list_borrowed_all.html'
paginate_by = 10

def get_queryset(self):
    return BookInstance.objects.filter(status__exact='o').order_by('due_back')

模板

^{pr2}$

应用程序网址.py

urlpatterns += [
path('mybooks/', views.LoanedBooksByUserListView.as_view(), name='my-borrowed'),
path(r'borrowed/', views.LoanedBooksAllListView.as_view(), name='all-borrowed'),

]

回溯

Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/catalog/borrowed/

Django Version: 2.1.3
Python Version: 3.7.0
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'catalog.apps.CatalogConfig']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']


Template error:
In template E:\MDN\django_projects\localibrary\catalog\templates\base_generic.html, error at line 8
   Reverse for 'renew-book-librarian' not found. 'renew-book-librarian' is not a valid view function or pattern name.
   1 : <!DOCTYPE html>
   2 : <html lang="en">
   3 : <head>
   4 :   {% block title %}<title>Local Library</title>{% endblock %}
   5 :   <meta charset="utf-8">
   6 :   <meta name="viewport" content="width=device-width, initial-scale=1">
   7 :   <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
   8 :   <link rel="stylesheet" href="https://use.fontawesome.c om/releases/v5.5.0/css/all.css" integrity="s ha384-B4dIYHKNBt8Bc12p+WXckhzcICo0wtJAoU8YZTY5qE0Id1GSseTk6S+L3BlXeVIU" crossorigin="anonymous">
   9 :   <link href="https://fonts.googleapis.com/css?family=Pridi:400,500,600" rel="stylesheet">
   10 :   <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
   11 :   <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
   12 :   <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
   13 :   <!-- Add additional CSS in static file -->
   14 :   {% load static %}
   15 :   <link rel="stylesheet" type="text/css" href="{% static '../static/css/styles.css' %}">
   16 : </head>
   17 : <body>
   18 : <section class="top">


Traceback:

File "C:\Users\JOACHI~1\Envs\joka\lib\site-packages\django\core\handlers\exception.py" in inner
  34.             response = get_response(request)

File "C:\Users\JOACHI~1\Envs\joka\lib\site-packages\django\core\handlers\base.py" in _get_response
  156.                 response = self.process_exception_by_middleware(e, request)

File "C:\Users\JOACHI~1\Envs\joka\lib\site-packages\django\core\handlers\base.py" in _get_response
  154.                 response = response.render()

File "C:\Users\JOACHI~1\Envs\joka\lib\site-packages\django\template\response.py" in render
  106.             self.content = self.rendered_content

File "C:\Users\JOACHI~1\Envs\joka\lib\site-packages\django\template\response.py" in rendered_content
  83.         content = template.render(context, self._request)

File "C:\Users\JOACHI~1\Envs\joka\lib\site-packages\django\template\backends\django.py" in render
  61.             return self.template.render(context)

File "C:\Users\JOACHI~1\Envs\joka\lib\site-packages\django\template\base.py" in render
  171.                     return self._render(context)

File "C:\Users\JOACHI~1\Envs\joka\lib\site-packages\django\template\base.py" in _render
  163.         return self.nodelist.render(context)

File "C:\Users\JOACHI~1\Envs\joka\lib\site-packages\django\template\base.py" in render
  937.                 bit = node.render_annotated(context)

File "C:\Users\JOACHI~1\Envs\joka\lib\site-packages\django\template\base.py" in render_annotated
  904.             return self.render(context)

File "C:\Users\JOACHI~1\Envs\joka\lib\site-packages\django\template\loader_tags.py" in render
  150.             return compiled_parent._render(context)

File "C:\Users\JOACHI~1\Envs\joka\lib\site-packages\django\template\base.py" in _render
  163.         return self.nodelist.render(context)

File "C:\Users\JOACHI~1\Envs\joka\lib\site-packages\django\template\base.py" in render
  937.                 bit = node.render_annotated(context)

File "C:\Users\JOACHI~1\Envs\joka\lib\site-packages\django\template\base.py" in render_annotated
  904.             return self.render(context)

File "C:\Users\JOACHI~1\Envs\joka\lib\site-packages\django\template\loader_tags.py" in render
  62.                 result = block.nodelist.render(context)

File "C:\Users\JOACHI~1\Envs\joka\lib\site-packages\django\template\base.py" in render
  937.                 bit = node.render_annotated(context)

File "C:\Users\JOACHI~1\Envs\joka\lib\site-packages\django\template\base.py" in render_annotated
  904.             return self.render(context)

File "C:\Users\JOACHI~1\Envs\joka\lib\site-packages\django\template\defaulttags.py" in render
  309.                 return nodelist.render(context)

File "C:\Users\JOACHI~1\Envs\joka\lib\site-packages\django\template\base.py" in render
  937.                 bit = node.render_annotated(context)

File "C:\Users\JOACHI~1\Envs\joka\lib\site-packages\django\template\base.py" in render_annotated
  904.             return self.render(context)

File "C:\Users\JOACHI~1\Envs\joka\lib\site-packages\django\template\defaulttags.py" in render
  209.                     nodelist.append(node.render_annotated(context))

File "C:\Users\JOACHI~1\Envs\joka\lib\site-packages\django\template\base.py" in render_annotated
  904.             return self.render(context)

File "C:\Users\JOACHI~1\Envs\joka\lib\site-packages\django\template\defaulttags.py" in render
  309.                 return nodelist.render(context)

File "C:\Users\JOACHI~1\Envs\joka\lib\site-packages\django\template\base.py" in render
  937.                 bit = node.render_annotated(context)

File "C:\Users\JOACHI~1\Envs\joka\lib\site-packages\django\template\base.py" in render_annotated
  904.             return self.render(context)

File "C:\Users\JOACHI~1\Envs\joka\lib\site-packages\django\template\defaulttags.py" in render
  442.             url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)

File "C:\Users\JOACHI~1\Envs\joka\lib\site-packages\django\urls\base.py" in reverse
  90.     return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))

File "C:\Users\JOACHI~1\Envs\joka\lib\site-packages\django\urls\resolvers.py" in _reverse_with_prefix
  622.         raise NoReverseMatch(msg)

Exception Type: NoReverseMatch at /catalog/borrowed/
Exception Value: Reverse for 'renew-book-librarian' not found. 'renew-book-librarian' is not a valid view function or pattern name.

图书实例列表借来的全部

<h1>All Borrowed Books</h1>

{% if bookinstance_list %}
<ul>

  {% for bookinst in bookinstance_list %}
  <li class="{% if bookinst.is_overdue %}text-danger{% endif %}">
    <a href="{% url 'book-detail' bookinst.book.pk %}">{{bookinst.book.title}}</a> ({{ bookinst.due_back }}) {% if user.is_staff %}- {{ bookinst.borrower }}{% endif %} {% if perms.catalog.can_mark_returned %}- <a href="{% url 'renew-book-librarian' bookinst.id %}">Renew</a>  {% endif %}
  </li>
  {% endfor %}
</ul>

{% else %}
  <p>There are no books borrowed.</p>
{% endif %}

提前谢谢!在


Tags: djangoinpybaselibpackagescontextsite
1条回答
网友
1楼 · 发布于 2024-04-20 05:44:33

<a href="{% url 'renew-book-librarian' bookinst.id %}Renew</a> "

这就是问题所在。你的背面没有“续借图书管理员”的字样。在

为了解决该问题,您需要添加具有以下相反名称的视图:

urlpatterns += [
    path('mybooks/', views.LoanedBooksByUserListView.as_view(), name='my-borrowed'),
    path(r'borrowed/', views.LoanedBooksAllListView.as_view(), name='all-borrowed'),
    # add this one
    path(r'borrowed/<int:bookinst_id>', views.LoanedBooksDetailView.as_view(), name='renew-book-librarian'),
]

并添加LoanedBooksDetailView视图。在

或者将url更改为另一个视图或#,而您没有正确的url,但希望用空url实现,如:

^{pr2}$

相关问题 更多 >