Пользовательский виджет изображения с Django - PullRequest
0 голосов
/ 10 февраля 2019

Я пытаюсь создать пользовательский виджет изображения следующим образом:

class ImageWidget(forms.widgets.Widget):

    template_name = 'widgets/picture.html'

    def get_context(self, name, value, attrs=None):

        return {'widget': {
            'name': name,
            'value': value,
        }}

    def render(self, name, value, attrs=None):
        context = self.get_context(name, value, attrs)
        template = loader.get_template(self.template_name).render(context)
        return mark_safe(template)

Проблема в том, что значение содержит относительный путь файла без учета префикса MEDIA (какполе формы будет).Я не знаю, как добавить или как получить доступ к этому полю в Django 1.8

Вот содержимое файла picture.html на всякий случай:

Currently: <img src={{ widget.value }}>
<br>Change: <input id="id_profile_image" name="profile_image" type="file">

RenderedHTML:

<p>
  <label for="id_profile_image">Profile image:</label> Currently: <img src="profile_images/CSC_00111.jpeg">
  <br>Change: <input id="id_profile_image" name="profile_image" type="file">
</p>

Мне нужно, чтобы значение атрибута src было / media / profile_images / CSC_00111.jpeg .

1 Ответ

0 голосов
/ 11 февраля 2019

Вы можете добавить медиа вручную, как это

def get_context(self, name, value, attrs=None):

        return {'widget': {
            'name': name,
            'value': '/media/' + value,
        }}
...