处理已弃用的`adminmedia`模板标签和{%admin_media_prefix%}的适当方法

时间:2012-11-29 11:11:29

标签: django django-1.5

从django 1.5开始,https://docs.djangoproject.com/en/1.5/releases/1.5/#miscellaneous

  

模板标签库adminmedia,它只包含   已弃用的模板标记{%admin_media_prefix%}已被删除。   尝试使用{%load adminmedia%}加载它将失败。如果你的   模板仍然包含您必须删除它的那一行。

那么在遗留库和我仍然使用{% load adminmedia %}并加载css的遗留项目中找到替换代码的适当方法是什么: -

<link rel="stylesheet" type="text/css" href="{% load adminmedia %}{% admin_media_prefix %}css/login.css">

2 个答案:

答案 0 :(得分:22)

自Django 1.3起,您可以使用django.contrib.staticfiles app。

确保您的INSTALLED_APPS中包含django.contrib.staticfiles,并在settings.py中指定了STATIC_ROOT和STATIC_URL选项。

然后运行manage.py collectstatic命令,所有应用程序的静态文件将收集在STATIC_ROOT文件夹中。

在模板中,您可以使用{{ STATIC_URL }}上下文变量(确保django.core.context_processors.static包含在TEMPLATE_CONTEXT_PROCESSORS中)或{% static %}模板标记。

<link href="{{ STATIC_URL }}admin/css/login.css" rel="stylesheet">

{% load staticfiles %}
<link href="{% static 'admin/css/login.css' %}" rel="stylesheet">

答案 1 :(得分:4)

我刚刚复制了base.css中的内容:

{% load admin_static %}

然后

<link href="{% static 'admin/css/base.css' %}" rel="stylesheet">

(将base.css替换为您需要的任何内容,例如您的login.css

确保django.contrib.staticfiles中有INSTALLED_APPS

(我不需要按照安东先前的建议配置STATIC_ROOT并运行manage.py collectstatic