为啥在 /groups/ 的 NoReverseMatch 中显示带有符号 '<' 的 '<groups'

Posted

技术标签:

【中文标题】为啥在 /groups/ 的 NoReverseMatch 中显示带有符号 \'<\' 的 \'<groups\'【英文标题】:why is showing '<groups' with the symbol '<' in NoReverseMatch at /groups/为什么在 /groups/ 的 NoReverseMatch 中显示带有符号 '<' 的 '<groups' 【发布时间】:2020-04-16 21:40:20 【问题描述】:

当我在浏览器中输入 http://127.0.0.1:8000/groups/ 时,我在 /groups/ 处得到 NoReverseMatch 并且'

环境:

请求方法:GET 请求地址:http://127.0.0.1:8000/groups/

Django 版本:2.2.5 Python 版本:3.8.0 已安装的应用程序: ['组','django.contrib.admin','django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'bootstrap3', 'accounts', 'posts'] 已安装的中间件: ['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']

模板错误:在模板中 C:\Users\User\Desktop\fullstack\django\simplesocialatom\simplesocial\templates\base.html, 第 12 行的错误 ' 4 : 5 : 6 : 明星社交 7 : 8 : 9 : 10:11: 12 : 13 : 14 : 15 : 16 : 17 : 18 : 19 : 20 : 21 : 22:

追溯:

文件 “C:\Users\User\Anaconda3\envs\simplesocialenv\lib\site-packages\django\urls\base.py” 相反 75. 额外的,resolver = resolver.namespace_dict[ns]

在处理上述异常期间('

文件 “C:\Users\User\Anaconda3\envs\simplesocialenv\lib\site-packages\django\core\handlers\exception.py” 在内部 34. response = get_response(request)

文件 "C:\Users\User\Anaconda3\envs\simplesocialenv\lib\site-packages\django\core\handlers\base.py" 在 _get_response 145. response = self.process_exception_by_middleware(e, request)

文件 "C:\Users\User\Anaconda3\envs\simplesocialenv\lib\site-packages\django\core\handlers\base.py" 在 _get_response 143. response = response.render()

文件 “C:\Users\User\Anaconda3\envs\simplesocialenv\lib\site-packages\django\template\response.py” 在渲染中 106. self.content = self.rendered_content

文件 “C:\Users\User\Anaconda3\envs\simplesocialenv\lib\site-packages\django\template\response.py” 在渲染内容中 83. content = template.render(context, self._request)

文件 "C:\Users\User\Anaconda3\envs\simplesocialenv\lib\site-packages\django\template\backends\django.py" 在渲染中 61. return self.template.render(context)

文件 “C:\Users\User\Anaconda3\envs\simplesocialenv\lib\site-packages\django\template\base.py” 在渲染中 171. 返回 self._render(context)

文件 “C:\Users\User\Anaconda3\envs\simplesocialenv\lib\site-packages\django\template\base.py” 在_render 163. return self.nodelist.render(context)

文件 “C:\Users\User\Anaconda3\envs\simplesocialenv\lib\site-packages\django\template\base.py” 在渲染中 937. bit = node.render_annotated(context)

文件 “C:\Users\User\Anaconda3\envs\simplesocialenv\lib\site-packages\django\template\base.py” 在 render_annotated 904. return self.render(context)

文件 “C:\Users\User\Anaconda3\envs\simplesocialenv\lib\site-packages\django\template\loader_tags.py” 在渲染中 150. 返回已编译的_parent._render(context)

文件 “C:\Users\User\Anaconda3\envs\simplesocialenv\lib\site-packages\django\template\base.py” 在_render 163. return self.nodelist.render(context)

文件 “C:\Users\User\Anaconda3\envs\simplesocialenv\lib\site-packages\django\template\base.py” 在渲染中 937. bit = node.render_annotated(context)

文件 “C:\Users\User\Anaconda3\envs\simplesocialenv\lib\site-packages\django\template\base.py” 在 render_annotated 904. return self.render(context)

文件 “C:\Users\User\Anaconda3\envs\simplesocialenv\lib\site-packages\django\template\loader_tags.py” 在渲染中 150. 返回已编译的_parent._render(context)

文件 “C:\Users\User\Anaconda3\envs\simplesocialenv\lib\site-packages\django\template\base.py” 在_render 163. return self.nodelist.render(context)

文件 “C:\Users\User\Anaconda3\envs\simplesocialenv\lib\site-packages\django\template\base.py” 在渲染中 937. bit = node.render_annotated(context)

文件 “C:\Users\User\Anaconda3\envs\simplesocialenv\lib\site-packages\django\template\base.py” 在 render_annotated 904. return self.render(context)

文件 “C:\Users\User\Anaconda3\envs\simplesocialenv\lib\site-packages\django\template\loader_tags.py” 在渲染中 62. 结果 = block.nodelist.render(context)

文件 “C:\Users\User\Anaconda3\envs\simplesocialenv\lib\site-packages\django\template\base.py” 在渲染中 937. bit = node.render_annotated(context)

文件 “C:\Users\User\Anaconda3\envs\simplesocialenv\lib\site-packages\django\template\base.py” 在 render_annotated 904. return self.render(context)

文件 “C:\Users\User\Anaconda3\envs\simplesocialenv\lib\site-packages\django\template\loader_tags.py” 在渲染中 62. 结果 = block.nodelist.render(context)

文件 “C:\Users\User\Anaconda3\envs\simplesocialenv\lib\site-packages\django\template\base.py” 在渲染中 937. bit = node.render_annotated(context)

文件 “C:\Users\User\Anaconda3\envs\simplesocialenv\lib\site-packages\django\template\base.py” 在 render_annotated 904. return self.render(context)

文件 “C:\Users\User\Anaconda3\envs\simplesocialenv\lib\site-packages\django\template\defaulttags.py” 在渲染中 309. 返回nodelist.render(context)

文件 “C:\Users\User\Anaconda3\envs\simplesocialenv\lib\site-packages\django\template\base.py” 在渲染中 937. bit = node.render_annotated(context)

文件 “C:\Users\User\Anaconda3\envs\simplesocialenv\lib\site-packages\django\template\base.py” 在 render_annotated 904. return self.render(context)

文件 “C:\Users\User\Anaconda3\envs\simplesocialenv\lib\site-packages\django\template\defaulttags.py” 在渲染中 443. url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)

文件 “C:\Users\User\Anaconda3\envs\simplesocialenv\lib\site-packages\django\urls\base.py” 相反 86. raise NoReverseMatch("%s 不是注册的命名空间" % key)

异常类型:/groups/ 处的 NoReverseMatch 异常值:'

这是我的相关源代码:

project.urls.py

from django.contrib import admin
from django.urls import path, include
from . import views


urlpatterns = [
    path('accounts/', include('accounts.urls', namespace='accounts')),
    path('groups/', include('groups.urls', namespace='groups')),
    path('accounts/', include('django.contrib.auth.urls')),
    path('admin/', admin.site.urls),
    path('', views.HomePage.as_view(), name='home'),
    path('test/', views.TestPage.as_view(), name='test'),
    path('thanks/', views.ThanksPage.as_view(), name='thanks'),
    path('posts/', include('posts.urls'), name='posts'),
]

项目 settings.py 文件

INSTALLED_APPS = [
    'groups',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'bootstrap3',
    'accounts',
    'posts',
]

groups.urls.py 文件

# GROUPS URLS.PY
from django.urls import path, include, re_path
from . import views

app_name = 'groups'

urlpatterns = [
    path('', views.ListGroups.as_view(), name='all'),
    path('new/', views.CreateGroup.as_view(), name='create'),
    # re_path(r'posts/in/(?P<slug>[-\w]+)/$', views.SingleGroup.as_view(), name='single'),
    path('posts/in/<slug:slug>/', views.SingleGroup.as_view(), name='single'),
    path('join/<slug>/', views.JoinGroup.as_view(), name='join'),
    path('leave/<slug>/', views.JoinGroup.as_view(), name='leave')
]

groups/views.py 文件

from django.shortcuts import render, get_object_or_404
from django.contrib.auth.mixins import (LoginRequiredMixin,
                                        PermissionRequiredMixin)
from django.contrib import messages
from django.urls import reverse
from django.views import generic
from groups.models import Group, GroupMember

class CreateGroup(LoginRequiredMixin, generic.CreateView):
    fields = ('name', 'description')
    model = Group

class SingleGroup(generic.DetailView):
    model = Group

class ListGroups(generic.ListView):
    model = Group


class JoinGroup(LoginRequiredMixin, generic.RedirectView):

    def get_redirect_url(self, *args, **kwargs):
        return reverse('groups:single', kwargs='slug':self.kwargs.get('slug'))

    def get(self, request, *args, **kwargs):
        group = get_object_or_404(Group, slug=self.kwargs.get('slug'))

        try:
            GroupMember.objects.create(user=self.request.user, group=group)
        except IntegrityError:
            messages.warning(self.request, ('Warning already a member'))
        else:
            messages.success(self.request, ('You are now a member'))
        return super().get(request, *args, **kwargs)

class LeaveGroup(LoginRequiredMixin, generic.RedirectView):

    def get_redirect_url(self, *args, **kwargs):
        return reverse('groups:single', kwargs='slug':self.kwargs.get('slug'))

    def get(self, request, *args, **kwargs):
        try:
            membership = models.GroupMember.objects.filter(
            user=self.request.user,
            group__slug=self.kwargs.get('slug')
            ).get()
        except models.GroupMember.DoesNotExist:
            messages.warning(self.request, 'sorry you are not in this group')
        else:
            membership.delete()
            messages.success(self.request, 'You have left the group')
            return super().get(request, *args, *kwargs)

【问题讨论】:

问题出在您的模板文件上。那里很可能有一个错字。请将其也添加到问题中。 是的。我发现我的一个模板调用包含一个错字,例如 % url ‘ 【参考方案1】:

可能有两件事:

groups 没有出现在您的INSTALLED_APPS 参数中,这正常吗? 关于您的错误日志,您的模板中似乎有一个拼写错误,需要/groups/。检查您是否有良好的报价类型,以及它们是否已关闭。

【讨论】:

安装的应用程序是正常的,但是是的,我在我的一个模板调用中打错了。

以上是关于为啥在 /groups/ 的 NoReverseMatch 中显示带有符号 '<' 的 '<groups'的主要内容,如果未能解决你的问题,请参考以下文章

XCode 打包成功后 Products目录依旧显示 红色 为啥

为啥不能使用 SqlFunctions 在 LinQ 中将 int 转换为字符串?

在 Django 中使用 % url % 时的 NoReverseMatch

如何将 Groups 添加到 ListView,然后将 Items 添加到 Groups

Rails 3.1 资产管道 - 为啥我的图像没有为生产进行预编译?

Django URL 标记不起作用 - NoReverseMatch