从Django模型获取项目到HTML

ojsjcaue  于 2023-06-25  发布在  Go
关注(0)|答案(1)|浏览(146)

我想在模型Notifications from models.py中包含每个通知的标题和消息。我不想改变每一个views.py,我必须这样做。我知道可以使用{% request.user.name %}标记来获取用户的详细信息,但如何使用另一个随机模型来实现这一点?
我已经尝试了一些东西。这些是我创建/更改的文件,试图做到这一点。(home是我的应用程序的名称)
home/templatetags/__init__.py

from .custom_tags import register

home/templatetags/custom_tags.py

from django import template
from home.models import Notifications

register = template.Library()

@register.simple_tag
def notifications():
    data = Notifications.objects.all()  
    return data

home/templates/base.html

{% load custom_tags %}
<html>
<head><!-- Some code here --></head>
<body>
    <!-- Some more code here -->
    {% notifications %}
    {% for notification in notifications_list %}
        {{ notification.title }}
    {% endfor %}
</body>

base.html中,线{% notifications %}显示<QuerySet [<Notifications: Notifications object (1)>]>。但其他的线路什么都不做。
有谁能告诉我我做错了什么吗?

6ojccjat

6ojccjat1#

一种解决方案是在自定义标记内呈现HTML,并返回一个属于该标记的小HTML模板:

@register.simple_tag
def notifications():
    data = Notifications.objects.all()  
    context = {"data": data}
    return render_to_string("...../notification_tag.html", context)

在base.html中,然后用途:

<body>
    <!-- Some more code here -->
    {% notifications %}
</body>

相关问题