django是否有类似于static和url的media标签以及如何设置它?
static
url
media
{% static 'styles/boo.css' %} {% url 'some_app:some_name' %} Is this possible: {% media 'what here' %}?
字符串如何设置?
yqyhoc1h1#
没有媒体模板标记。设置了MEDIA_ROOT和MEDIA_URL后,您可以通过引用其url属性来使用模板中的媒体文件。举例来说:
MEDIA_ROOT
MEDIA_URL
class Foo(models.Model): image = models.ImageField( ... )
字符串然后在模板中:
<img src="{{ foo_object.image.url }}">
型此外,看看有关如何访问媒体文件的文档。
vsmadaxz2#
你需要{% get_media_prefix %}。设置方法在文档中解释:您必须在设置中设置MEDIA_ROOT和MEDIA_URL,并将MEDIA_URL添加到urls.py中。
{% get_media_prefix %}
urls.py
i7uaboj43#
通过上下文处理器的{% 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
字符串模板:
<img src="{{company.logo_url}}"/>
型使用@属性的原因是希望避免ImageField不包含图像的情况。在这种情况下,直接在模板中访问company.logo.url将导致异常。这实际上是Django长期存在的问题:https://code.djangoproject.com/ticket/13327
company.logo.url
92dk7w1h4#
对于媒体文件,我使用django-imagekit基本用途:
django-imagekit
from django.db import models from imagekit.models import ProcessedImageField from imagekit.processors import ResizeToFill
字符串models.py
class Photo(models.Model): owner = models.ForeignKey(Project, on_delete=models.CASCADE) photos = ProcessedImageField(upload_to='pagename/images', processors=[ResizeToFill(900, 600)], format='JPEG', options={'quality': 90})
型settings.py
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'imagekit', ]
型.html
{% load imagekit %} {% thumbnail '100x50' source_file %}
型阅读文档-https://pypi.python.org/pypi/django-imagekit
4条答案
按热度按时间yqyhoc1h1#
没有媒体模板标记。
设置了
MEDIA_ROOT
和MEDIA_URL
后,您可以通过引用其url
属性来使用模板中的媒体文件。举例来说:
字符串
然后在模板中:
型
此外,看看有关如何访问媒体文件的文档。
vsmadaxz2#
你需要
{% get_media_prefix %}
。设置方法在文档中解释:您必须在设置中设置
MEDIA_ROOT
和MEDIA_URL
,并将MEDIA_URL
添加到urls.py
中。i7uaboj43#
通过上下文处理器的{% get_media_prefix %}和{{MEDIA_URL}}都是您要求的好选择。
话虽如此,如果你真正想实现的是呈现一个链接到一个上传的媒体文件,如图像,有一个更好的方法。
产品型号:
字符串
模板:
型
使用@属性的原因是希望避免ImageField不包含图像的情况。在这种情况下,直接在模板中访问
company.logo.url
将导致异常。这实际上是Django长期存在的问题:https://code.djangoproject.com/ticket/13327
92dk7w1h4#
对于媒体文件,我使用
django-imagekit
基本用途:
字符串
models.py
型
settings.py
型
.html
型
阅读文档-https://pypi.python.org/pypi/django-imagekit