4

ホームページ内に商品を表示する最善の方法を見つけようとしています。django-oscar に既に付属しているサンドボックスを使用して Web サイトを構築しています (Github からプロジェクトを複製しました)。

デフォルトのホームページが「プロモーション」アプリによって制御されていることがわかりました。ただし、私の製品は「http://localhost:8000/catalog」内に表示されているだけです(「カタログ」アプリによって制御されます)。

ホームページに商品を表示する方法はありますか? または、ホームページを制御するデフォルトのアプリを変更する必要がありますか? (この場合、どうすればいいですか?)

EDIT 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 コアの一部でしたが、現在はスタンドアロン アプリに分離されています。

ここを参照してください: 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 に答える