0

我想向dashboard应用程序添加一些网址/视图。所以我使用 fork 应用程序oscar_fork_app。我app.py在分叉的dashboard应用程序文件夹中创建了一个文件。还在应用程序内添加了一个app.py内部catalogue子应用dashboard程序。继
我的#dashboard/app.py

from oscar.apps.dashboard.app import DashboardApplication as CoreDashboardApplication


class DashboardApplication(CoreDashboardApplication):
    name = 'dashboard'
    permissions_map = {
        'index': (['is_staff'], ['partner.dashboard_access']),
    }

    index_view = get_class('dashboard.views', 'IndexView')
    catalogue_app = get_class('dashboard.catalogue.app', 'application')


    def get_urls(self):
        urls = [
            url(r'^catalogue/', include(self.catalogue_app.urls)),
        ]
        return self.post_process_urls(urls)


application = DashboardApplication()

我的#dashboard/catalogue/app.py

from oscar.apps.dashboard.catalogue.app import CatalogueApplication as CoreCatalogueApplication


class CatalogueApplication(CoreCatalogueApplication):
    name = None
    csv_upload_view = get_class('dashboard.catalogue.views',
                                 'CSVUpload')

    def get_urls(self):
        urls = [
            url(r'^csvupload/$',
                self.csv_upload_view.as_view(),
                name='csvupload'),
        ]
        return self.post_process_urls(urls)


application = CatalogueApplication()

当我击中/dashboard它时说

Page not found (404)
Request Method: GET
Request URL:    http://localhost:8000/dashboard/
Using the URLconf defined in teashop.urls, Django tried these URL patterns, in this order:
^i18n/
^admin/
^accounts/reviews/$ [name='review-list']
^accounts/subscriptions/$ [name='subscriptions']
^accounts/storecredit/$ [name='storecredit']
^catalogue/
^basket/
^checkout/
^accounts/
^search/
^dashboard/ ^catalogue/
^offers/
The current URL, dashboard/, didn't match any of these.

我是否必须将 oscar.apps.dashboard.app 中的所有网址复制粘贴到我的 forked_app ?以正确的方式扩展的方法是什么?

4

1 回答 1

1

我必须添加父类的所有 url。

class DashboardApplication(CoreDashboardApplication):
    ...
    catalogue_app = get_class('dashboard.catalogue.app', 'application')


    def get_urls(self):
        urls = super(DashboardApplication, self).get_urls()  
        urls += [
            url(r'^catalogue/', include(self.catalogue_app.urls)),
        ]
        return self.post_process_urls(urls)

同样对于其他 app.py

class CatalogueApplication(CoreCatalogueApplication):
    name = None
    csv_upload_view = get_class('dashboard.catalogue.views',
                                 'CSVUpload')

    def get_urls(self):
        urls = super(CatalogueApplication, self).get_urls()
        urls += [
            url(r'^csvupload/$',
                self.csv_upload_view.as_view(),
                name='csvupload'),
        ]
        return self.post_process_urls(urls)


application = CatalogueApplication()
于 2015-09-18T05:07:09.260 回答