在django奥斯卡主页中添加产品

在django奥斯卡主页中添加产品,django,django-oscar,Django,Django Oscar,我正试图找出在我的主页中显示产品的最佳方式。我正在使用django oscar附带的沙箱构建我的网站(我从Github克隆了这个项目) 我发现默认主页由“促销”应用程序控制。但是,我的产品仅显示在“”内(由“目录”应用程序控制) 有没有办法在我的主页上显示产品?还是我必须更改控制主页的默认应用程序?(在这种情况下,我怎么做?) 编辑1:我相信我找到了解决办法。你可以按照教程;但是,您需要进行一些更改,因此您的代码必须如下所示: from oscar.apps.catalogue.views i

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

我发现默认主页由“促销”应用程序控制。但是,我的产品仅显示在“”内(由“目录”应用程序控制)

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

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

 from oscar.apps.catalogue.views import CatalogueView

 class HomeView(CatalogueView):
     template_name = 'promotions/home.html'
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;
}

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

为此,奥斯卡有一个名为。此应用程序负责在主页上呈现内容块,以及其他内容(我可以从文档中看到)

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

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

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

如果您选择改变这种行为,那么应该提供一个良好的起点

更新2021.02.12:

Django Oscar Promotions是一款应用程序,用于在Oscar中编辑可编辑的促销内容。它以前是Oscar core的一部分,但现在被分离成一个独立的应用程序


请参见此处:

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

此文件如下所示:

 from oscar.apps.catalogue.views import CatalogueView

 class HomeView(CatalogueView):
     template_name = 'promotions/home.html'
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;
}

我尝试向页面添加块内容;但是,出现一个错误,提示“URL”/“不存在”,似乎我无法将块内容插入到我的根URL中。你知道如何解决这个问题吗?你使用的是什么版本的Oscar,你能告诉我你是如何将它的url添加到你的项目中的吗?(只是关于奥斯卡的一句话)实际上我从Github导入了这个项目,所以我没有使用正式版本。我使用
url(r'',include(application.url)),
添加奥斯卡的url。我从Github导入了该项目,因为在VirtualEnvironment中安装Oscar后,我找不到它的文件夹(我希望能够访问该文件夹以对其文件进行一些更改)。一切正常,您是否尝试过将输入框留空?(虽然我很确定会出现同样的错误)你可能应该仔细阅读一下奥斯卡的文档,它的一个更好的功能是可以让你把它的任何部分换成你自己的。我不建议使用fork,除非你真的做了一些非常繁重的更改,而且你不介意放弃以后的更新。我再次安装了它,发现了原始文件夹的位置。我现在的问题是如何使用自定义模板显示产品?我是否需要导入一些标记或更改视图中的某些内容?