Appropriate way to handle deprecated `adminmedia` templatetag and {% admin_media_prefix %}

北城余情 提交于 2019-12-03 08:28:13

问题


From django 1.5 onwards, https://docs.djangoproject.com/en/1.5/releases/1.5/#miscellaneous

The template tags library adminmedia, which only contained the deprecated template tag {% admin_media_prefix %}, was removed. Attempting to load it with {% load adminmedia %} will fail. If your templates still contain that line you must remove it.

So what is the appropriate way to replace code found in legacy libraries and my legacy projects which still uses {% load adminmedia %} and loads css like:-

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

?


回答1:


Since Django 1.3 you can use django.contrib.staticfiles app.

Make sure that django.contrib.staticfiles is included in your INSTALLED_APPS and the STATIC_ROOT and STATIC_URL options are specified in your settings.py.

Then run manage.py collectstatic command and all applications' static files will be collected in STATIC_ROOT folder.

In the templates you can use the {{ STATIC_URL }} context variable (make sure that django.core.context_processors.static is included in TEMPLATE_CONTEXT_PROCESSORS) or the {% static %} template tag.

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

or

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



回答2:


I just copied what's in base.css:

{% load admin_static %}

and then

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

(replace base.css with whatever you need, like login.css in your case)

Make sure you have django.contrib.staticfiles in your INSTALLED_APPS.

(I didn't need to configure STATIC_ROOT and run manage.py collectstatic as suggested previously by Anton)



来源:https://stackoverflow.com/questions/13624458/appropriate-way-to-handle-deprecated-adminmedia-templatetag-and-admin-media

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!