如何将 django 模型字段放入 html 模板?



第一次在这里发帖,对Django很陌生,提前抱歉。

我试图将我的模型中的名称字段插入我的 html 模板,然后我将将其转换为 pdf。

涉及 html 到 pdf 转换的所有内容都在工作,我似乎无法从我的模型中获取名称字段以在渲染时将其放入html_template中。

我尝试在render_to_pdf视图中的context_dict中添加"name":name,但这不起作用。

我认为我可能遗漏了一些东西。

pdf_template.html

{% block content %}
<div class="container">
<div class="row">
<p> **{{name}}** </p>

</div>
{% endblock %}

models.py

class User(models.Model):
username = models.CharField(max_length = 20, primary_key=True)
name = models.CharField(max_length = 20)

def __str__(self): 
return self.name

views.py

def render_to_pdf(template_src, context_dict={}):
template = get_template(template_src)
html  = template.render(context_dict)
result = BytesIO()
pdf = pisa.pisaDocument(BytesIO(html.encode("ISO-8859-1")), result)
if not pdf.err:
return HttpResponse(result.getvalue(), content_type='application/pdf')
return None

目前还不清楚你想做什么/问什么。

如果要列出所有用户名,可以这样做:

def listView(req):
users = User.objects.all
return render(request, 'home.html', {'names': users})

然后在您的模板中:

<div class="container">
{% for name in names%}
<p>{{ name.username }}</P       
</div>

这就是您需要构建函数并使用当前设计调用它的方式。如果名称为 none 或空字符串,则不会显示。

def render_to_pdf(template_src, context_dict=None):
if context_dict is None:
context_dict = {}
template = get_template(template_src)
html  = template.render(context_dict)
...

render_to_pdf('template/path/...', {'name': "some name"})

最新更新