django媒体URL标签

2admgd59  于 2023-08-08  发布在  Go
关注(0)|答案(4)|浏览(102)

django是否有类似于staticurlmedia标签以及如何设置它?

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

Is this possible: {% media 'what here' %}?

字符串
如何设置?

yqyhoc1h

yqyhoc1h1#

没有媒体模板标记。
设置了MEDIA_ROOTMEDIA_URL后,您可以通过引用其url属性来使用模板中的媒体文件。
举例来说:

class Foo(models.Model):
    image = models.ImageField(
        ...
    )

字符串
然后在模板中:

<img src="{{ foo_object.image.url }}">


此外,看看有关如何访问媒体文件的文档。

vsmadaxz

vsmadaxz2#

你需要{% get_media_prefix %}
设置方法在文档中解释:您必须在设置中设置MEDIA_ROOTMEDIA_URL,并将MEDIA_URL添加到urls.py中。

i7uaboj4

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

92dk7w1h

92dk7w1h4#

对于媒体文件,我使用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

相关问题