Django Oscar 更改 URL 模式

abi*_*eee 3 django django-oscar

我已经设置了一个 django-oscar 项目,我正在尝试配置 U​​RL。我的目标是更改/catalogue/catalog.

按照文件我已经添加app.pymyproject/app.py

我的项目/app.py

from django.conf.urls import url, include
from oscar import app


class MyShop(app.Shop):
    # Override get_urls method
    def get_urls(self):
        urlpatterns = [
            url(r'^catalog/', include(self.catalogue_app.urls)),
            # all the remaining URLs, removed for simplicity
            # ...
        ]
        return urlpatterns


application = MyShop()
Run Code Online (Sandbox Code Playgroud)

我的项目/urls.py

from django.conf.urls import url, include
from django.contrib import admin
from . import views
from .app import application

urlpatterns = [
    url(r'^i18n/', include('django.conf.urls.i18n')),

    url(r'^admin/', admin.site.urls),

    url(r'', application.urls),

    url(r'^index/$',views.index, name = 'index'),
]
Run Code Online (Sandbox Code Playgroud)

该项目服务器运行没有任何错误,但是当我尝试localhost:8000/catalog,我得到

/catalog/ 'customer' 处的 NoReverseMatch 不是已注册的命名空间。

预期输出localhost:8000/catalog应返回目录页面。

c.g*_*rey 6

你可以试试这个

在 app.py

from django.conf.urls import url, include
from oscar import app

class MyShop(app.Shop):
    # Override get_urls method
    def get_urls(self):
        urls = [
            url(r'^catalog/', include(self.catalogue_app.urls)),
            # all the remaining URLs, removed for simplicity
            # ...
        ]
        urls = urls + super(MyShop,self).get_urls()
        return urls


application = MyShop()
Run Code Online (Sandbox Code Playgroud)

在你的 urls.py 你可以简单地添加这个

from myproject.app import application as shop

 url(r'', shop.urls),
Run Code Online (Sandbox Code Playgroud)

希望对你有帮助