奥斯卡的自定义网址和视图

时间:2017-10-18 20:58:35

标签: python django django-oscar

我似乎无法在奥斯卡获得匹配的网址。我的奥斯卡应用程序是我主应用程序中的子应用程序。我的理解是在oscar的子模块中的app.py中创建视图和URL。它不断抛出NoReverseMatch。奥斯卡页面所有加载,而不是我的自定义视图

在myapp / shop / dashboard / app.py

from django.contrib.auth import views as auth_views
from django.contrib.auth.forms import AuthenticationForm
from django.conf.urls import include, url
from oscar.core.application import DashboardApplication
from oscar.core.loading import get_class
from views import HomeViews
class DashboardApplication(DashboardApplication):

    def get_urls(self):
        urls = [
            url(r'^someurl/', HomeViews.dosomething, name="hi"),
        ]
        return self.post_process_urls(urls)

application = DashboardApplication()

在myapp / shop / dashboard / views.py

from django.conf import settings
from django.db.models import User
from oscar.app.partner.models import Partner
from django.middleware.csrf import get_token
from oscar.apps.dashboard.views import HomeView as CoreHomeView

class HomeView(CoreHomeView):
    def dosomething(request):
        return HttpResponse("hello")

在我的主应用程序中,我在settings.py中注册了商店

INSTALLED_APPS =[
...
]] + get_core_apps(['shop'])

在我的主应用程序网址中我已经包含了oscar网址

from shop.app import application as shop_app
urlpatterns = i18n_patterns(
    url(r'^shop/', include(shop_app.urls)),

1 个答案:

答案 0 :(得分:0)

您需要扩展现有的网址列表,而不是替换它。这主要是为什么你没有反向匹配错误,因为奥斯卡可能拥有的默认网址,不再存在。对于任何其他非奥斯卡分叉的应用程序,这可以是好的(只是你自己的网址,没有别的)。

class DashboardApplication(DashboardApplication):

    def get_urls(self):
        my_urls = [
            url(r'^someurl/', HomeViews.dosomething, name="hi"),
        ]
        default_urls = super(DashboardApplication, self).get_urls()
        return self.post_process_urls(my_urls) + default_urls