我是Django的新手,我正在尝试在Django中创建自定义标签
我的自定义标记文件templatetag/custom_tag.py
from django import template
from model_file.models import my_Model
register = template.Library()
@register.simple_tag
def get_custom_tag_fn():
return my_Model.objects.all()
我的html文件
{% load custom_tag %}
{% get_custom_tag_fn as queries %}
{% for query in queries %}
{{query.json_my_model_data}}
{% endfor %}
我没有从这个代码中得到任何输出或错误。谁能指出我错在哪里。
关于我的model.py
看起来像什么的更多信息
from django.db import models
from jsonfield import JSONField
class my_Model(models.Model):
json_my_model_data = JSONField()
2条答案
按热度按时间vcudknz31#
看起来
my_Model
没有val1
字段,如果你想在你的数据模型my_Model
中显示json_my_model_data
字段,你可能需要将你的模板更改为以下内容:最重要的是,如果
queries
查询集至少有一个来自数据库的my_Model
对象,{{query.json_my_model_data}}
将只执行并显示json_my_model_data
的内容。关于自定义模板标签的更多信息。
希望能帮上忙。
pw9qyyiw2#
你可以创建Django模板标签。* 你可以看到我的答案解释如何覆盖现有的Django模板标签:
首先,在
core
文件夹中创建templatetags
文件夹,其中包含__init__.py
(空文件)和custom_tags.py
,其中settings.py
如下所示,然后不要忘记重新启动服务器以将custom_tags.py
应用到Django项目。* 其他名称对于custom_tags.py
也很好,你可以看到我解释templatetags文件夹和load标签的答案:并且,不要忘记在
settings.py
中将core
设置为INSTALLED_APPS
,以将custom_tags.py
应用于Django项目,如下所示。* 将core
设置为INSTALLED_APPS
也可以使用python manage.py collectstatic
将core
文件夹中的静态文件收集到Django Project根文件夹中。我建议在开始构建Django项目之前将core
设置为INSTALLED_APPS
:接下来,在
custom_tags.py
中创建带有@register.simple_tag的uppercase
标记,如下所示。* 这一次,你不需要重启服务器,因为你已经重启了服务器来将custom_tags.py
应用到Django项目:然后,使用
uppercase
标记,如下所示:然后,将显示以下内容: