django媒体网址标签

时间:2016-02-09 09:52:18

标签: python django django-urls

django的media标记是否与staticurl类似,以及如何设置?

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

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

如何设置?

4 个答案:

答案 0 :(得分:23)

没有媒体模板标签。

设置Exception in thread "main" java.lang.UnsatisfiedLinkError:Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\git\z3\build\libz3java.dll: The operating system cannot run %1 at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1938) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1854) at java.lang.Runtime.loadLibrary0(Runtime.java:870) at java.lang.System.loadLibrary(System.java:1122) at com.microsoft.z3.Native.<clinit>(Native.java:14) at com.microsoft.z3.Global.ToggleWarningMessages(Global.java:86) at JavaExample.main(JavaExample.java:2347) MEDIA_ROOT后,您可以通过引用其MEDIA_URL属性在模板中使用媒体文件。

例如:

url

然后在你的模板中:

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

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

答案 1 :(得分:13)

您需要{% get_media_prefix %}

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

答案 2 :(得分:3)

{% 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

答案 3 :(得分:1)

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