在 django-oscar 主页添加产品

Adding products in django-oscar homepage

我正在尝试找出在主页中显示产品的最佳方式。我正在使用 django-oscar 附带的沙箱构建我的网站(我从 Github 克隆了该项目)。

我发现默认主页是由 'promotions' 应用程序控制的。但是,我的产品只显示在“http://localhost:8000/catalogue”(由 'catalogue' 应用程序控制)内。

有没有办法在我的主页上显示产品?或者我是否必须更改控制主页的默认应用程序? (在这种情况下,我该怎么做?)

编辑 1:我相信我找到了解决方案。你可以按照教程How to Customize an Existing View;但是,您需要进行一些更改,因此您的代码必须如下所示:

 from oscar.apps.catalogue.views import CatalogueView

 class HomeView(CatalogueView):
     template_name = 'promotions/home.html'

这样您就可以访问 'promotions/home.html' 中的产品。我不确定这是否是最好的实现方式,如果其他人有此解决方案的替代方案,请发表评论。

为此 Oscar 有一个名为 promotions 的应用程序。此应用程序负责在主页上呈现内容块等(正如我从文档中看到的那样)。

通常您会使用促销应用向页面添加产品和其他类型的内容。这可以从仪表板完成,使用 Content blocks,可以在 Content 菜单下找到。

您可以定义几种促销类型(单一产品、自动和手工挑选的产品列表等)。

定义促销后,您将能够将其与页面路由相关联,在您的情况下应为 /

如果您选择更改此行为,那么 documentation 应该是一个很好的起点。

2021.02.12 更新:

Django Oscar Promotions 是 Oscar 中仪表板可编辑的促销内容的应用程序。它以前是 Oscar 核心的一部分,但现在已分离为一个独立的应用程序。

看这里:https://github.com/django-oscar/django-oscar-promotions

我也想将目录作为默认页面观看,我在 /etc/nginx/sites-available/myproject[= 末尾通过 nginx rewrite func 找到了解决方案18=]

此文件如下所示:

server {
server_name yourdomainorip.com;

access_log off;

location /static/ {
    alias /opt/myenv/static/;
}
location /media/ {
    alias /opt/myenv/media/;
}

location / {
    proxy_pass http://127.0.0.1:8001;
    proxy_set_header X-Forwarded-Host $server_name;
    proxy_set_header X-Real-IP $remote_addr;
    add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
}
    rewrite ^(/)$ http://yourdomainorip.com/catalogue/ permanent;
}