python - URL 处出现 NoReverseMatch 错误,X 未注册命名空间

标签 python django django-models django-templates namespaces

我正在尝试向我的 django 应用程序添加简单的购物车功能,并且一直在关注 this非常简单的教程。

但是,当尝试访问我的购物车页面时,我收到以下错误:

NoReverseMatch at /cart/
'main_page' is not a registered namespace

main_page 是我的主应用程序的名称,而不是教程中的“shop”。

在 main_page 的 models.py 中,定义所有字段后:

def get_absolute_url(self):
    return reverse('main_page:collection_detail', args=[self.id])

这似乎与教程 here 中显示的示例一致

我的模板中导致错误的代码是:

<a href="{% url "main_page:collection_detail" %}" class="btn btn-default">Continue Shopping</a>

据我所知,一切似乎都在排队。我错过了什么?

编辑:包括我的网址模式:

来自包含其他应用程序网址的基础应用程序:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('cart/', include('qfny_cart.urls')),
    path('', include('main_page.urls')),
    path('i18n/', include('django.conf.urls.i18n')),
    url('product/', include('main_page.urls')),

]

来 self 的主应用程序 main_app:

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^bedroom/collection/(?P<name>[\w\-]+)$', views.collection_detail, name='collection_detail'),
    url('bedroom/', views.bedroom_view, name='bedroom_view'),
    url(r'^dining/collection/(?P<name>[\w\-]+)$', views.collection_detail, name='collection_detail'),
    url('dining/', views.dining_view, name='dining_view'),
    url(r'^living/collection/(?P<name>[\w\-]+)$', views.collection_detail, name='collection_detail'),
    url('living/', views.living_view, name='living_view'),
    url(r'^accesories/collection/(?P<name>[\w\-]+)$', views.collection_detail, name='collection_detail'),
    url('accessories/', views.accessories_view, name='accessories_view'),
    url(r'^office/collection/(?P<name>[\w\-]+)$', views.collection_detail, name='collection_detail'),
    url('office/', views.office_view, name='office_view'),

]

从我的购物车应用程序:

urlpatterns = [
    url(r'^$', views.cart_detail, name='cart_detail'),
    url(r'^add/(?P<product_id>\d+)/$', views.cart_add, name='cart_add'),
    url(r'^remove/(?P<product_id>\d+)/$', views.cart_remove, name='cart_remove'),

]

最佳答案

您在 href 中给出了命名空间,但尚未将其添加到 urlpatterns 中,

像这样在 urls.py 中添加 app_name,

app_name = 'main_page'
urlpatterns = [
  # all your url/paths are here 
]

或者以其他方式(如果您有多个应用程序,则不推荐),删除 main_page

<a href="{% url "collection_detail" %}" class="btn btn-default">Continue Shopping</a>

从这里开始

def get_absolute_url(self):
        return reverse('collection_detail', args=[self.id])

关于python - URL 处出现 NoReverseMatch 错误,X 未注册命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53928501/

相关文章:

python - Django:复杂的注释,如何避免for循环?

javascript - Axios 不作为 post 方法发送

python - 获取相关对象

python - 如何在 Django 中自动更改模型字段

python - 当输入限制为 'yyyy-mm' 时,如何使 pd.to_datetime 插入月份的最后一天而不是第一天?

python - 在应用服务计划下的 azure 功能中发送电子邮件

python - 面临以下错误 "ModuleNotFoundError: No module named ' pymysql'"

Django通用外键和select_相关

python - Django 如何传递它的数据库连接

python - 即使使用 'null=True',“NOT NULL 约束失败”