- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 django-oscar 2.0.1 开发一个电子商务网站。
我想更改访问目录的网址(如文档中所述 here ),但我总是收到此错误:
**NoReverseMatch at / 'customer' is not a registered namespace.**.
我知道我不是唯一一个遇到此错误的人( Django Oscar change URL pattern ),但提出的解决方案是这篇文章对我不起作用(也许是因为 django-oscar 版本此时是 1.6.5 ?) .
所以,这是我基于 django-oscar documentation 遵循的步骤:
python manage.py oscar_fork_app catalogue forkedApps
#'oscar.apps.catalogue',
'forkedApps.catalogue.apps.CatalogueConfig',
'oscar.apps.catalogue.reviews',
这是项目的结构:
project
> forkedApps
> catalogue
. __init__.py
. admin.py
. apps.py
. models.py
> project
. __init__.py
. settings.py
. urls.py
. wsgi.py
fork 目录
# forkedApps/catalogue/apps.py
import oscar.apps.catalogue.apps as apps
from oscar import config
from django.conf.urls import url
from django.views.generic.base import RedirectView
from django.urls import reverse_lazy
class CatalogueConfig(apps.CatalogueConfig):
name = 'forkedApps.catalogue'
class MyShop(config.Shop):
# Override get_urls method
def get_urls(self):
from django.contrib.auth import views as auth_views
from oscar.views.decorators import login_forbidden
urlpatterns = [
url(r'^cata/', self.catalogue_app.urls),
url(r'^$', RedirectView.as_view(url=reverse_lazy('catalogue:index')), name='home'),
url(r'^basket/', self.basket_app.urls),
#...all other urls
]
return urlpatterns
项目初始化
#project/project/__init__.py
default_app_config = 'forkedApps.catalogue.apps.MyShop'
项目网址
#project/project/urls.py
from django.apps import apps
from django.urls import include, path
from django.contrib import admin
urlpatterns = [
path('i18n/', include('django.conf.urls.i18n')),
path('admin/', admin.site.urls),
#path('', include(apps.get_app_config('oscar').urls[0])),
path('', include(apps.get_app_config('catalogue').urls[0])),
### Does catalogue refers to my forked catalogue ? ###
]
当我运行服务器时我收到此错误:
raise NoReverseMatch("%s is not a registered namespace" % key) django.urls.exceptions.NoReverseMatch: 'customer' is not a registered namespace
你知道我错过了什么吗?
解决方案:
我创建了一个名为“oscar_url”(任意名称)的应用,并将其添加到 INSTALLED_APPS
oscar_url初始化
#project/oscar_url/__init__.py
default_app_config = 'oscar_url.apps.MyShop'
oscar_url 应用
#project/oscar_url/apps.py
import oscar.config as apps
from django.views.generic.base import RedirectView
from django.urls import reverse_lazy
from django.conf.urls import url
class MyShop(apps.Shop):
name = 'oscar_url'
def get_urls(self):
from django.contrib.auth import views as auth_views
from oscar.views.decorators import login_forbidden
urlpatterns = [
url(r'^cata/', self.catalogue_app.urls),
url(r'^$', RedirectView.as_view(url=reverse_lazy('catalogue:index')), name='home'),
url(r'^basket/', self.basket_app.urls),
url(r'^checkout/', self.checkout_app.urls),
#all others urls...
]
return urlpatterns
我修改了项目网址:
项目网址
#project/project/urls.py
urlpatterns = [
path('i18n/', include('django.conf.urls.i18n')),
path('admin/', admin.site.urls),
#path('', include(apps.get_app_config('oscar').urls[0])),
path('', include(apps.get_app_config('oscar_url').urls[0])),
]
最佳答案
这里有几件事:
您已经定义了一个 MyShop
类,但您没有在任何地方加载它。您需要将此应用包含在您的 INSTALLED_APPS
中。
请注意,在这种情况下,将 MyShop
放在您的目录应用程序中可能没有意义 - 该商店应用程序适用于您的整个项目,而不仅仅是目录。
在您的项目网址中,您需要加载此新应用的配置而不是 Oscar 的配置:
path('', include(apps.get_app_config('name_of_your_app').urls[0])),
您在 MyShop
中设置 name = 'name_of_your_app'
的位置。
关于python - Django-奥斯卡 : how to change the URL from root APP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57869711/
我是 Python 和 Django 的初学者。我已经安装了 django-oscar。然后我配置它并启动服务器,它工作。 现在,我不明白如何添加产品? 在仪表板上有一个按钮 Create new p
django 的位置: /usr/lib/python2.7/dist-packages/django/__init__.pyc django oscar 的位置: /usr/local/lib/py
我正在使用 django-oscar 2.0.1 开发一个电子商务网站。 我想更改访问目录的网址(如文档中所述 here ),但我总是收到此错误: **NoReverseMatch at / 'cus
我在尝试使用优惠和优惠券时遇到了 Django-Oscar 问题。当我删除凭证时,相关实体 ConditionalOffer 不会被删除并保留在数据库中。 因此,当我尝试使用与刚刚删除的代码相同的代码
我是一名优秀的程序员,十分优秀!