如何使用 Django 消息框架发送 Json 或 "dict"
How to send Json or "dict" using Django Messages Framework
我正在使用 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
当尝试在模板中访问时,消息被转换为字符串:like
"{"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 %}
我正在使用 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
当尝试在模板中访问时,消息被转换为字符串:like
"{"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_Xavailable_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 %}