django 媒体 url 标签
django media url tag
django 是否有类似于 static
和 url
的 media
标签以及如何设置它?
{% static 'styles/boo.css' %}
{% url 'some_app:some_name' %}
Is this possible: {% media 'what here' %}?
如何设置?
没有媒体模板标签。
设置 MEDIA_ROOT
和 MEDIA_URL
后,您可以通过引用其 url
属性在模板中使用媒体文件。
例如:
class Foo(models.Model):
image = models.ImageField(
...
)
然后在您的模板中:
<img src="{{ foo_object.image.url }}">
此外,请查看有关 how to access media files 的文档。
设置方法已说明in the docs:您必须在设置中设置MEDIA_ROOT
和MEDIA_URL
并将MEDIA_URL
添加到urls.py
.
{% get_media_prefix %} and {{MEDIA_URL}} via context processor 都是很好的替代方案。
也就是说,如果您真正想要实现的是将 link 渲染到上传的媒体文件(例如图像),则有更好的方法。
型号:
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
对于媒体文件,我使用 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 %}
django 是否有类似于 static
和 url
的 media
标签以及如何设置它?
{% static 'styles/boo.css' %}
{% url 'some_app:some_name' %}
Is this possible: {% media 'what here' %}?
如何设置?
没有媒体模板标签。
设置 MEDIA_ROOT
和 MEDIA_URL
后,您可以通过引用其 url
属性在模板中使用媒体文件。
例如:
class Foo(models.Model):
image = models.ImageField(
...
)
然后在您的模板中:
<img src="{{ foo_object.image.url }}">
此外,请查看有关 how to access media files 的文档。
设置方法已说明in the docs:您必须在设置中设置MEDIA_ROOT
和MEDIA_URL
并将MEDIA_URL
添加到urls.py
.
{% get_media_prefix %} and {{MEDIA_URL}} via context processor 都是很好的替代方案。
也就是说,如果您真正想要实现的是将 link 渲染到上传的媒体文件(例如图像),则有更好的方法。
型号:
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
对于媒体文件,我使用 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 %}