如何在 f 字符串中添加 link?

How do you add a link in an f string?

我正在尝试在下面的 f 字符串中添加一个 link:

d += f'<li> {event.time} {event.teacher} {event.student} {event.status} </li>'

基本上,我希望它看起来像下面这样:

f'<li> <a href="{% url 'somewhere' event.pk %}"> {event.time} {event.teacher} {event.student} {event.status} </a> </li>'

但是,我在执行此操作时遇到以下错误:

SyntaxError: f-string: expecting '}'

你们知道如何在 f 字符串中输入 link 吗?有什么问题请问我。

这里是代码的上下文,我有一些人问的 f 字符串:

class Calendar(HTMLCalendar):
    def __init__(self, year=None, month=None):
        self.year = year
        self.month = month
        super(Calendar, self).__init__()

    # formats a day as a td
    # filter events by day
    def formatday(self, day, events):
        events_per_day = events.filter(date__day=day)
        d = ''
        if True:
            for event in events_per_day:
                d += f'<li> {event.time} {event.teacher} {event.student} {event.status} </li>'

        if day != 0:
            return f"<td><span class='date'>{day}</span><ul> {d} </ul></td>"
        return '<td></td>'

顺便说一下,这些都在我的 utils.py 文件夹中。

f-string 不会评估 Django 模板标签,它只是将其视为花括号,但其中的内容恰好是一个无意义的表达式。

您可以利用 reverse(…) [Django-doc] 执行 URL 模式解析:

from django.urls import <strong>reverse</strong>

f'<li> <a href="{ <strong>reverse("somewhere", args=(event.pk,))</strong> }"> {event.time} {event.teacher} {event.student} {event.status} </a> </li>'

您可以使用变量来实现相同的输出:-

url_endpoint = reverse("somewhere", args=(event.pk,))

f'<li> <a href="{url_endpoint}"> {event.time} {event.teacher} {event.student} {event.status} </a> </li>'