Задать вопрос
desperadik
@desperadik
Истина где-то рядом.

Как получить url к файлу в django?

Есть модель:
class TextTemplate(models.Model):
        title = models.CharField(max_length=255, verbose_name=u'Заголовок')
        text = models.TextField(verbose_name=u'Текст', null=True, blank=True)
        file_upload = models.FileField(upload_to='templates/', verbose_name=u'Файл', blank=True, null=True)

нужно получить url к файлу, загруженному в поле file_upload.
TextTemplate.objects.values? TextTemplate.objects.filter?
TextTemplate.object.file_upload.url?? - свои домыслы, после чтения djbook.ru (Например, если ImageField назван mug_shot, вы можете получить URL к файлу в шаблоне, используя {{ object.mug_shot.url }}.)
  • Вопрос задан
  • 4158 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
sim3x
@sim3x
желательно встроить в модель
class TextTemplate(models.Model):
     ....
     def get_absolute_file_upload_url(self):
     return MEDIA_URL + self.file_upload.url


#urls.py
...
urlpatterns = patterns(
    '',
    url(r'^text-template/(?P<primary_key>\d+)/$', get_tt),
    url(r'^text-template/$', get_all_tt),
    )
...

#view.py
def get_tt(request, primary_key):
    tt_item = TextTemplate.objects.get(pk=primary_key)
    # or
    # tt_item = get_or_404(TextTemplate, pk=primary_key)
    print tt_item.file_upload.url
    return render('t.html', {'tt': tt_item})

def get_all_tt(request): 
    tt_all = TextTemplate.objects.all()
    for tt_item in tt_all:
         print tt_item.file_upload.url
    return render('tt-all.html', {'tt': tt_all})

#t.html
<img src="{{ MEDIA_URL }}{{ tt.url }}">
<br>
<img src="{{ tt.get_absolute_file_upload_url }}">


#tt-all.html
{% for tt in tt_all %}
<img src="{{ tt.get_absolute_file_upload_url }}">
{% endfor %}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы