Django template ==字符串条件不起作用

kmbjn2e3  于 2022-12-20  发布在  Go
关注(0)|答案(1)|浏览(135)

我想在电子邮件模板中显示一些条件信息,但即使{{ error }}确认我的错误值为list index out of range,也不会应用该条件,而会考虑else
我发送到我的(电子邮件)模板这:

    • 查看次数. py**
try:
    [...]
except Exception as e:
    error_product_import_alert(
                {'order_increment_id': order_increment_id, 'product': item['sku'], 
                'error': e, 'request': request})
    • 产品导入警报错误()**
def error_product_import_alert(context):
    product = context['product']
    order_id = context['order_increment_id']
    error = context['error']
    sujet = f' Anomalie : Import SKU {product} ({order_id}) impossible 
       ({error})!'
    contenu = render_to_string('gsm2/alerts/product_import_ko.html', context)
    [...]
    • 电子邮件模板**
<p>--{{ error }}--</p>
{% if error == 'list index out of range' %}
    <p><strong>Le produit est introuvable dans la base.</strong></p>
{% else %}
    <p><strong>Erreur inconnue : veuillez contacter l'administrateur.</strong></p>
{% endif %}

也许我的错误太大了,我甚至看不到它。有吗?

6psbrbz9

6psbrbz91#

你正在比较一个Exception和一个字符串。这在模板中是不起作用的。试着在你的python函数中做逻辑,然后返回错误字符串,这个字符串将在模板中呈现。
例如:
您应该尝试:
views.py

try:
    [...]
except Exception as e:
    error = "Erreur inconnue : veuillez contacter l'administrateur."
    if e.args[0] == 'list index out of range':
        error = "Le produit est introuvable dans la base."
    error_product_import_alert({
        'order_increment_id': order_increment_id,
        'product': item['sku'], 
        'error': error,
        'request': request
})

template

<p><strong>{{error}}</strong></p>

相关问题