如果jinja标记是字符串格式,那么如何在Django和jinja2中使用它?

2024-09-29 19:19:23 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题的Part 1分别提问和回答。在

我有一个Report和一个ReportTemplate。在

+----+----------+---------------+-------------+
| id |  title   |     data      | template_id |
+----+----------+---------------+-------------+
|  1 | report 1 | {data: [...]} |           1 |
+----+----------+---------------+-------------+

reports table

+----+-----------+---------------+------------+
| id |   title   |    markup     |    css     |
+----+-----------+---------------+------------+
|  1 | template1 | <doctype!>... | body {.... |
+----+-----------+---------------+------------+

templates table

报表属于报表模板。报表模板有许多报表。在

我对admin.py中的报表有一个名为print_as_pdf的自定义管理操作

^{pr2}$

这些是模型:

class ReportTemplate(models.Model):
    title = models.CharField(max_length=50)
    markup = models.TextField(default = 'markup here...')
    styles = models.TextField(default = 'styles here...')

    # __unicode__ on Python 2
    # __str__ on Python 3
    def __unicode__(self):
        return self.title

class Report(models.Model):
    title = models.CharField(max_length=50)
    commodity = models.CharField(max_length=10)
    date = models.DateTimeField('date traded')
    trade_period = models.CharField(max_length=10, default='open')
    quantity_cutoff = models.IntegerField(default=0)
    printed = models.BooleanField(default=0)
    datetime_email_sent = models.DateTimeField('date email sent', blank=True, null=True)
    data = models.TextField(default = 'data here...')
    template = models.ForeignKey(ReportTemplate)

我想做的是:

  1. 检索关联的ReportTemplate及其markup字段值
  2. 将报表的data字段值放入1中的markup值,该值是用jinja2标记编写的
  3. 使用weasyprint并将2中填充数据的标记打印为pdf

我被困在第二步。在

由于我检索到的标记是字符串格式的,我如何使用现有数据运行它?在


Tags: 标记iddefaultdatadatehere报表title
1条回答
网友
1楼 · 发布于 2024-09-29 19:19:23

Jinja 2 documentation调整,可以简单到

>>> template = Template(report.markup)
>>> template.render(report=report)
<html>...

如果要将输出存储到另一个变量中

^{pr2}$

前提是模板希望以report模板参数的形式获取整个报表。

相关问题 更多 >

    热门问题