django 媒体 url 标签

Posted

技术标签:

【中文标题】django 媒体 url 标签【英文标题】:django media url tag 【发布时间】:2016-05-19 05:54:12 【问题描述】:

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

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

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

如何设置?

【问题讨论】:

我也有同样的问题,怎么解决? 【参考方案1】:

没有媒体模板标签。

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

例如:

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

然后在您的模板中:

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

另外,请查看有关 how to access media files 的文档。

【讨论】:

我做了同样的方法问题是 django 3.2 我使用了我的 url ``` path('homes', include("page_home.urls"))``` 只工作但我想加载图像在索引网址中path('', include("page_home.urls"))【参考方案2】:

你需要% get_media_prefix %

设置方法解释in the docs:您必须在设置中设置MEDIA_ROOTMEDIA_URL,并将MEDIA_URL 添加到您的urls.py

【讨论】:

如果你使用 wagtail 则先加载静态模板标签:% load static %【参考方案3】:

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

% get_media_prefix % 和 MEDIA_URL via context processor 对于您的要求都是不错的选择。

话虽如此,如果您真正想要实现的是呈现一个指向已上传媒体文件(例如图像)的链接,那么还有更好的方法。

型号:

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"/>

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

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

【讨论】:

以上是关于django 媒体 url 标签的主要内容,如果未能解决你的问题,请参考以下文章

Django:URL模板标签中的模型参数

django 模板标签 url 仅在最后一个空 url 模式时有效

django url 模板标签的问题,% url %

是否可以将关键字参数传递给 Django % url % 模板标签?关键字参数值应该来自 html 标签

模板 url 标签无法识别 Django 命名的 url

Django:URL conf、url 模板标签的最佳实践