【发布时间】:2014-01-29 13:39:47
【问题描述】:
假设我在 FileField 中存储了一个文本文件。现在我想在网页上显示它的内容。我阅读了 django 模板文档,但没有找到方法。
当然,我可以在我的视图中执行content = f.read() 并将content 传递给模板。有没有更好的办法?谢谢!
better way 表示我可以通过将MyModel.objects.all() 传递给模板来完成工作。我不能read 模板中的文件,但应该有一些技巧。
编辑
我试过了:
def display_html(self):
content = self.html_file.read()
print(content)
return content
但什么都没有显示...
最终编辑
很奇怪,下面的代码有效
class MyModel(models.Model):
name = models.CharField()
text = models.FileField()
def display_text_file(self):
fp = open(self.text.path)
return fp.read().replace('\n', '<br>')
但是我认为等效的方法不起作用:
class MyModel(models.Model):
name = models.CharField()
text = models.FileField()
def display_text_file(self):
return self.text.read().replace('\n', '<br>')
# neither do self.text.read().decode().replace('\n', '<br>')
我真的很想知道原因。
【问题讨论】:
-
您可以创建自己的小部件并覆盖 render() 方法,但您也必须读取文件。见docs.djangoproject.com/en/dev/ref/forms/widgets/…
-
@gawel 谢谢,我现在就看
-
@gawel 我想这不是我需要的......
-
你总是可以定义一个方法来返回文件内容并在你的模板中使用 object.this_method
标签: python django django-templates