python - 如何使用 Django 消息框架发送 Json 或 "dict"

标签 python django django-messages

我正在使用 Django Messaging 框架发送有关验证错误的附加数据:

def clean_X(self):
        xuser_id = self.cleaned_data['xuser_id']
        if xuser.objects.filter(xuser_id=xuser_id).exists():
            available_now = {"available" : ["example","hello","ahc","sdcsd"]}
            messages.error(self.request, message = available_now,extra_tags="available_ids")
            raise forms.ValidationError('Sorry! User ID "%(xuser_id)s" is already taken, Please try another or chose one from following:', params={"xuser_id" : xuser_id})
        return xuser_id 

当尝试在模板中访问时,消息将转换为字符串:如

"{"available" : ["example","hello","ahc","sdcsd"]}"

难以以编程方式访问,即message.available

如何使用Django-Messages将json直接发送到模板。我的目的是,不仅仅是显示一条消息,而是使 available-id 的可点击(就像 gmail 自动建议用户名中的那样)

谢谢!

最佳答案

{% for message in messages %}
    <p>{{ message.tags }}</p>
    {% if message.tags == 'available_ids error' %}
    {% for obj,values in message.message.items %}
        <div>
            {{ obj  }} 
            {% for val in values %}
                <p class="user-id">{{ val }}</p>
            {% endfor %}
        </div>
    {% endfor %}
    {% endif %}
{% endfor %}

您可以在模板中使用上述代码片段以使其正常工作并根据您的要求进行修改。

它是如何工作的?

我们迭代每条消息,因为我们在消息中插入了字典,所以我们必须迭代字典,而字典内部我们有列表,所以我们也必须迭代它。 因此我们必须使用三个for循环。 您必须应用一些条件,例如何时必须迭代?您可以通过标签检查使用它。

这里我为此目的进行了硬编码(迭代条件)。

编辑:

使用两个for循环 用这些行更新你的 clean_X

available_now = ["example","hello","ahc","sdcsd"]
messages.error(self.request, message = available_now,extra_tags="available_ids")

并在模板中使用这些行

{% for message in messages %}
    <p>{{ message.tags }}</p>
    {% if message.tags == 'available_ids error' %}
        <div>
            {% for val in message.message %}
                <p class="user-id">{{ val }}</p>
            {% endfor %}
        </div>
    {% endif %}
{% endfor %}

关于python - 如何使用 Django 消息框架发送 Json 或 "dict",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35453079/

相关文章:

python - 创建嵌套字典 python

python - 删除所有 django.contrib.messages

尽管 RequestContext,Django 消息传递框架不显示消息

python - 我如何在不在 python 中转储的情况下解析 wiki 页面?

python - 在 Tensorflow 2.0 中用另一个张量索引张量的第 k 维

python - 如何计算条件列中值的频率?

sql - 在不必要时防止 Django 模型调用中的慢速 INNER JOIN

python - 用于具有多个左连接的 SQL 查询的 Django ORM

css - Django外部css文件问题

Django 消息框架 - 默认缺少 i18n