Adding products in django-oscar homepage

2019-05-11 22:31发布

问题:

I'm trying to figure out the best way to display products inside my homepage. I'm building my website using the sandbox that already comes with django-oscar (I cloned the project from Github).

I discovered that the default homepage is controlled by 'promotions' app. However, my products are just being displayed inside 'http://localhost:8000/catalogue' (controlled by 'catalogue' app).

Is there a way to display the products in my homepage? Or will I have to change the default app that controls the homepage? (in this case, how can I do that?)

EDIT 1: I believe that I found a solution. You can follow the tutorial How to Customize an Existing View; however, you need to make some changes, so your code must looks like this:

 from oscar.apps.catalogue.views import CatalogueView

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

This way you will have access to the products in your 'promotions/home.html'. I'm not sure if it is the best way to implement this, if someone else has an alternative to this solution, please comment.

回答1:

For this purpose Oscar has an app called promotions. This application is responsible for rendering blocks of content on the homepage, among other things (as I can see you found out from the documentation).

Usually you would use the promotion app to add products and other types of content to a page. This can be done from the Dashboard, using Content blocks, which can be found under the Content menu.

There are a few types of promotions that you can define (single product, automatic, and hand picked product list, and others).

After defining your promotion, you will be able to associate it with a page route, which in your case should be /.

If you choose to change this behaviour, then the documentation should provide a good starting point.



回答2:

I also wanted to watching catalogue as a default page and I had find solution through nginx rewrite func at the end of /etc/nginx/sites-available/myproject

This file looks like this:

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;
}