Скажем, я сохранил текстовый файл в FileField. Теперь я хочу отобразить его содержимое на веб-странице. Я прочитал документ шаблона django, но не нашел способ сделать это.django - Как вставить содержимое загруженного файла в шаблон?
Конечно, я могу сделать content = f.read()
в моих взглядах и пройти content
к шаблону. Есть ли способ лучше? Спасибо!
better way
означает, что я мог бы выполнить эту работу, передав MyModel.objects.all()
шаблону. Я не могу создать файл в шаблоне, но для этого должны быть какие-то хаки.
редактировать
Я пробовал:
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(), но вам также придется прочитать файл. См. Https://docs.djangoproject.com/en/dev/ref/forms/widgets/#django.forms.Widget.render – gawel
@gawel Спасибо, сейчас я прочитаю – laike9m
@gawel Это не то, что мне нужно. предположим ... – laike9m