django媒体网址标签

Dan*_*ski 12 python django django-urls

Django的是否有media标签类似static,并url和如何设置的呢?

{% static 'styles/boo.css' %}
{% url 'some_app:some_name' %} 

Is this possible: {% media 'what here' %}?
Run Code Online (Sandbox Code Playgroud)

如何设置?

Lei*_*all 28

没有媒体模板标签.

设置后MEDIA_ROOT,MEDIA_URL您可以通过引用其url属性在模板中使用媒体文件.

例如:

class Foo(models.Model):
    image = models.ImageField(
        ...
    )
Run Code Online (Sandbox Code Playgroud)

然后在你的模板中:

<img src="{{ foo_object.image.url }}">
Run Code Online (Sandbox Code Playgroud)

另请查看有关如何访问媒体文件的文档.


Los*_*ses 17

你需要{% get_media_prefix %}.

它设置的方式,说明在docs:你必须设置MEDIA_ROOTMEDIA_URL您的设置并添加MEDIA_URL到您的urls.py.

  • 如果使用w,则首先加载静态模板标签:`{%load static%}` (4认同)

eln*_*ren 5

通过上下文处理器进行的{%get_media_prefix%}{{MEDIA_URL}}都是您所要求的很好的选择。

话虽这么说,如果您真正想要实现的是呈现到上载媒体文件(例如图像)的链接,则有更好的方法。

模型:

class Company(models.Model):
    logo = models.ImageField()

    @property
    def logo_url(self):
        if self.logo and hasattr(self.logo, 'url'):
            return self.logo.url
Run Code Online (Sandbox Code Playgroud)

模板:

<img src="{{company.logo_url}}"/>
Run Code Online (Sandbox Code Playgroud)

@property的原因是,您要避免ImageField不包含图像的情况。company.logo.url在这种情况下,直接在模板中访问将导致异常。

这实际上是Django中长期存在的问题:https : //code.djangoproject.com/ticket/13327