4

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

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

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

编辑1:我相信我找到了解决方案。您可以按照教程如何自定义现有视图;但是,您需要进行一些更改,因此您的代码必须如下所示:

 from oscar.apps.catalogue.views import CatalogueView

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

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

4

2 回答 2

12

为此,Oscar 有一个名为promotions. 此应用程序负责在主页上呈现内容块,除其他外(我可以看到您从文档中发现)。

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

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

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

如果您选择更改此行为,那么文档应该提供一个很好的起点。

2021.02.12 更新:

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

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

于 2015-05-03T13:47:23.990 回答
0

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

该文件如下所示:

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/$2 permanent;
}
于 2017-03-16T12:45:04.900 回答