【问题标题】:How to add mini_wishlist for django-oscar?如何为 django-oscar 添加 mini_wishlist?
【发布时间】:2019-04-01 10:12:07
【问题描述】:

我正在使用 django-oscar 为电子商务网站工作。 我的愿望清单有问题。我想在导航栏上添加 mini_whislist。它看起来像奥斯卡的篮子快。

我确实尝试过这个,但它只适用于愿望清单部分。

{% if wishlists %}
   {% for wishlist in wishlists %} 
       <span class="text-muted b">{{ wishlist.name }}</span>
       <span class="text-muted b">{{ wishlist.lines.count }}</span>
   {% endfor %}
{% else %}
    <img src="{% static "images/topview.png" %}">
    <span class="p-2 text-muted b">EMPTY</span>
{% endif %}

如何让它出现在每个页面上?

【问题讨论】:

  • 你把这段代码放在哪个模板里面?该模板的完整路径是什么?请编辑问题并添加这些详细信息。
  • 我只是使用 oscar 的模板。但是我用它自定义了引导程序 4。所以奥斯卡的篮子完全可以工作,但他们没有添加 wishlist_quick.html。

标签: django django-oscar


【解决方案1】:

在客户应用程序中创建上下文处理器...
context_processors.py

def wishlists(request):
    if not (request.user and request.user.is_authenticated):
        return {}
    return {
        'wishlists': request.user.wishlists.all()
    }

并将其放入设置文件中

TEMPLATE_CONTEXT_PROCESSORS = (

    'customer.context_processors.wishlists',
)

那么你可以在任何地方使用愿望清单

【讨论】:

  • 这是个好主意!非常感谢。我在你的帮助下解决了这个问题。我的奥斯卡版本需要一些更改[最新]。在 ..oscar/apps/wishlists/context_processors.py 中创建文件,然后在我们的 settings.py 文件中在 TEMPLATES = > OPTIONS > context_processors 中添加这一行: ... 'oscar.apps.wishlists.context_processors .wishlists'
  • 抱歉,我还没有看到这个。当我注销时出现此错误:'AnonymousUser' 对象没有属性'wishlists' 可以解决吗?
  • 如果不是(用户和user.is_authenticated):返回{}我已编辑答案
  • 再次感谢您。我将您的代码更改如下; def wishlists(request): if not (request.user and request.user.is_authenticated): return {} else: return {'wishlists': request.user.wishlists.all()}
【解决方案2】:

一个想法是将您为此功能编写的所有 html 放入一个 HTML 文件中,然后在 layout.html 中使用 {% include 'your_file.html' %},放入 base.html 不是一个好主意,因为仪表板还扩展了相同的基本模板。

另外,请注意您必须在 checkout/layout.html 中执行相同的操作,因为它们为结帐页面提供了单独的布局。

【讨论】:

  • 我已经这样做了,我认为 oscar 的愿望清单应用程序仅设置在客户的个人资料中,但篮子的应用程序适用于所有页面。感谢您的帮助。
猜你喜欢
  • 2020-09-10
  • 2018-10-06
  • 1970-01-01
  • 2018-08-27
  • 1970-01-01
  • 1970-01-01
  • 2015-07-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多