Fixed #16050 -- BACKWARDS-INCOMPATIBLE CHANGE: Moved static files of the admin to conventional file system location.

This also removes the need for ADMIN_MEDIA_PREFIX and replaces it with the convention to find admin's static files at STATIC_URL + 'admin/'.

Thanks to Jacob for the review and general help.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@16487 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Jannis Leidel 2011-06-30 09:06:19 +00:00
parent 89e0e8b6bc
commit 38a2444277
118 changed files with 485 additions and 418 deletions

View file

@ -183,18 +183,34 @@ To see how that works, and to read more details, check out
With a template tag
-------------------
The second option is the :ttag:`get_static_prefix` template tag. You can
use this if you're not using :class:`~django.template.RequestContext`, or if you
need more control over exactly where and how :setting:`STATIC_URL` is
injected into the template. Here's an example:
To easily link to static files Django ships with a :ttag:`static` template tag.
.. code-block:: html+django
{% load static %}
<img src="{% static "images/hi.jpg" %}" />
It is also able to consume standard context variables, e.g. assuming a
``user_stylesheet`` variable is passed to the template:
.. code-block:: html+django
{% load static %}
<link rel="stylesheet" href="{% static user_stylesheet %}" type="text/css" media="screen" />
Another option is the :ttag:`get_static_prefix` template tag. You can use
this if you're not using :class:`~django.template.RequestContext` (and
therefore not relying on the ``django.core.context_processors.static``
context processor), or if you need more control over exactly where and how
:setting:`STATIC_URL` is injected into the template. Here's an example:
.. code-block:: html+django
{% load static %}
<img src="{% get_static_prefix %}images/hi.jpg" />
There's also a second form you can use to avoid extra processing if you need the
value multiple times:
There's also a second form you can use to avoid extra processing if you need
the value multiple times:
.. code-block:: html+django

View file

@ -215,6 +215,11 @@ their deprecation, as per the :ref:`Django deprecation policy
:setting:`LOGGING` setting should include this filter explicitly if
it is desired.
* The template tag
:func:`django.contrib.admin.templatetags.adminmedia.admin_media_prefix`
was deprecated since Django 1.4 and will be removed in favor of the
generic static files handling.
* 2.0
* ``django.views.defaults.shortcut()``. This function has been moved
to ``django.contrib.contenttypes.views.shortcut()`` as part of the

View file

@ -228,42 +228,23 @@ Example usage::
Other Helpers
=============
The ``static`` context processor
--------------------------------
There are a few other helpers outside of the
:mod:`staticfiles <django.contrib.staticfiles>` app to work with static
files:
.. function:: django.core.context_processors.static
- The :func:`django.core.context_processors.static` context processor
which adds :setting:`STATIC_URL` to every template context rendered
with :class:`~django.template.RequestContext` contexts.
This context processor adds the :setting:`STATIC_URL` into each template
context as the variable ``{{ STATIC_URL }}``. To use it, make sure that
``'django.core.context_processors.static'`` appears somewhere in your
:setting:`TEMPLATE_CONTEXT_PROCESSORS` setting.
- The builtin template tag :ttag:`static` which takes a path and
joins it with the the static prefix :setting:`STATIC_URL`.
Remember, only templates rendered with :class:`~django.template.RequestContext`
will have acces to the data provided by this (and any) context processor.
- The builtin template tag :ttag:`get_static_prefix` which populates a
template variable with the static prefix :setting:`STATIC_URL` to be
used as a variable or directly.
.. templatetag:: get_static_prefix
The ``get_static_prefix`` templatetag
=====================================
.. highlight:: html+django
If you're not using :class:`~django.template.RequestContext`, or if you need
more control over exactly where and how :setting:`STATIC_URL` is injected
into the template, you can use the :ttag:`get_static_prefix` template tag
instead::
{% load static %}
<img src="{% get_static_prefix %}images/hi.jpg" />
There's also a second form you can use to avoid extra processing if you need
the value multiple times::
{% load static %}
{% get_static_prefix as STATIC_PREFIX %}
<img src="{{ STATIC_PREFIX }}images/hi.jpg" />
<img src="{{ STATIC_PREFIX }}images/hi2.jpg" />
- The similar template tag :ttag:`get_media_prefix` which works like
:ttag:`get_static_prefix` but uses :setting:`MEDIA_URL`.
.. _staticfiles-development-view:

View file

@ -44,20 +44,6 @@ modules (in the format ``'foo.bar.baz'``) for which this site is an admin.
The admin site uses this in its automatically-introspected documentation of
models, views and template tags.
.. setting:: ADMIN_MEDIA_PREFIX
ADMIN_MEDIA_PREFIX
------------------
Default: ``'/static/admin/'``
The URL prefix for admin media -- CSS, JavaScript and images used by the Django
administrative interface. Make sure to use a trailing slash, and to have this be
different from the :setting:`MEDIA_URL` setting (since the same URL cannot be
mapped onto two different sets of files). For integration with :doc:`staticfiles
</ref/contrib/staticfiles>`, this should be the same as
:setting:`STATIC_URL` followed by ``'admin/'``.
.. setting:: ADMINS
ADMINS

View file

@ -479,6 +479,8 @@ value of the :setting:`MEDIA_URL` setting.
django.core.context_processors.static
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. function:: django.core.context_processors.static
.. versionadded:: 1.3
If :setting:`TEMPLATE_CONTEXT_PROCESSORS` contains this processor, every

View file

@ -17,7 +17,7 @@ Built-in tag reference
.. templatetag:: autoescape
autoescape
~~~~~~~~~~
^^^^^^^^^^
Control the current auto-escaping behavior. This tag takes either ``on`` or
``off`` as an argument and that determines whether auto-escaping is in effect
@ -41,7 +41,7 @@ Sample usage::
.. templatetag:: block
block
~~~~~
^^^^^
Define a block that can be overridden by child templates. See
:ref:`Template inheritance <template-inheritance>` for more information.
@ -49,14 +49,14 @@ Define a block that can be overridden by child templates. See
.. templatetag:: comment
comment
~~~~~~~
^^^^^^^
Ignore everything between ``{% comment %}`` and ``{% endcomment %}``
.. templatetag:: csrf_token
csrf_token
~~~~~~~~~~
^^^^^^^^^^
In the Django 1.1.X series, this is a no-op tag that returns an empty string for
future compatibility purposes. In Django 1.2 and later, it is used for CSRF
@ -66,7 +66,7 @@ Forgeries </ref/contrib/csrf>`.
.. templatetag:: cycle
cycle
~~~~~
^^^^^
Cycle among the given strings or variables each time this tag is encountered.
@ -187,7 +187,7 @@ call to ``{% cycle %}`` doesn't specify silent::
.. templatetag:: debug
debug
~~~~~
^^^^^
Output a whole load of debugging information, including the current context and
imported modules.
@ -195,7 +195,7 @@ imported modules.
.. templatetag:: extends
extends
~~~~~~~
^^^^^^^
Signal that this template extends a parent template.
@ -214,7 +214,7 @@ See :ref:`template-inheritance` for more information.
.. templatetag:: filter
filter
~~~~~~
^^^^^^
Filter the contents of the variable through variable filters.
@ -230,7 +230,7 @@ Sample usage::
.. templatetag:: firstof
firstof
~~~~~~~
^^^^^^^
Outputs the first variable passed that is not False, without escaping.
@ -270,7 +270,7 @@ explicitly::
.. templatetag:: for
for
~~~
^^^
Loop over each item in an array. For example, to display a list of athletes
provided in ``athlete_list``::
@ -347,7 +347,7 @@ than -- the following::
.. templatetag:: if
if
~~
^^
The ``{% if %}`` tag evaluates a variable, and if that variable is "true" (i.e.
exists, is not empty, and is not a false boolean value) the contents of the
@ -551,7 +551,7 @@ precedence rules.
.. templatetag:: ifchanged
ifchanged
~~~~~~~~~
^^^^^^^^^
Check if a value has changed from the last iteration of a loop.
@ -595,7 +595,7 @@ will be displayed if the value has not changed::
.. templatetag:: ifequal
ifequal
~~~~~~~
^^^^^^^
Output the contents of the block if the two arguments equal each other.
@ -624,7 +624,7 @@ tag instead.
.. templatetag:: ifnotequal
ifnotequal
~~~~~~~~~~
^^^^^^^^^^
Just like ``ifequal``, except it tests that the two arguments are not equal.
@ -634,7 +634,7 @@ Just like ``ifequal``, except it tests that the two arguments are not equal.
.. templatetag:: include
include
~~~~~~~
^^^^^^^
Loads a template and renders it with the current context. This is a way of
"including" other templates within a template.
@ -687,7 +687,7 @@ See also: ``{% ssi %}``.
.. templatetag:: load
load
~~~~
^^^^
Load a custom template tag set.
@ -710,7 +710,7 @@ more information.
.. templatetag:: now
now
~~~
^^^
Display the current date and/or time, using a format according to the given
string. Such string can contain format specifiers characters as described
@ -744,7 +744,7 @@ This would display as "It is the 4th of September".
.. templatetag:: regroup
regroup
~~~~~~~
^^^^^^^
Regroup a list of alike objects by a common attribute.
@ -855,7 +855,7 @@ an attribute "description," you could use::
{% regroup people by gender.description as gender_list %}
Or, if ``gender`` is a field with ``choices``, it will have a
:meth:`~django.db.models.Model.get_FOO_display` method available as an
:meth:`^django.db.models.Model.get_FOO_display` method available as an
attribute, allowing you to group on the display string rather than the
``choices`` key::
@ -867,7 +867,7 @@ attribute, allowing you to group on the display string rather than the
.. templatetag:: spaceless
spaceless
~~~~~~~~~
^^^^^^^^^
Removes whitespace between HTML tags. This includes tab
characters and newlines.
@ -896,7 +896,7 @@ this example, the space around ``Hello`` won't be stripped::
.. templatetag:: ssi
ssi
~~~
^^^
Output the contents of a given file into the page.
@ -943,7 +943,7 @@ See also: ``{% include %}``.
.. templatetag:: templatetag
templatetag
~~~~~~~~~~~
^^^^^^^^^^^
Output one of the syntax characters used to compose template tags.
@ -968,7 +968,7 @@ The argument tells which template bit to output:
.. templatetag:: url
url
~~~
^^^
Returns an absolute path reference (a URL without the domain name) matching a
given view function and optional parameters. This is a way to output links
@ -1014,7 +1014,7 @@ refer to the name of the pattern in the ``url`` tag instead of using the
path to the view.
Note that if the URL you're reversing doesn't exist, you'll get an
:exc:`~django.core.urlresolvers.NoReverseMatch` exception raised, which will
:exc:`^django.core.urlresolvers.NoReverseMatch` exception raised, which will
cause your site to display an error page.
If you'd like to retrieve a URL without displaying it, you can use a slightly
@ -1097,7 +1097,7 @@ projects?
.. templatetag:: widthratio
widthratio
~~~~~~~~~~
^^^^^^^^^^
For creating bar charts and such, this tag calculates the ratio of a given value
to a maximum value, and then applies that ratio to a constant.
@ -1113,7 +1113,7 @@ which is rounded up to 88).
.. templatetag:: with
with
~~~~
^^^^
.. versionchanged:: 1.3
New keyword argument format and multiple variable assignments.
@ -1147,7 +1147,7 @@ Built-in filter reference
.. templatefilter:: add
add
~~~
^^^
Adds the argument to the value.
@ -1180,7 +1180,7 @@ output will be ``[1, 2, 3, 4, 5, 6]``.
.. templatefilter:: addslashes
addslashes
~~~~~~~~~~
^^^^^^^^^^
Adds slashes before quotes. Useful for escaping strings in CSV, for example.
@ -1193,7 +1193,7 @@ If ``value`` is ``"I'm using Django"``, the output will be ``"I\'m using Django"
.. templatefilter:: capfirst
capfirst
~~~~~~~~
^^^^^^^^
Capitalizes the first character of the value.
@ -1206,7 +1206,7 @@ If ``value`` is ``"django"``, the output will be ``"Django"``.
.. templatefilter:: center
center
~~~~~~
^^^^^^
Centers the value in a field of a given width.
@ -1219,7 +1219,7 @@ If ``value`` is ``"Django"``, the output will be ``" Django "``.
.. templatefilter:: cut
cut
~~~
^^^
Removes all values of arg from the given string.
@ -1232,7 +1232,7 @@ If ``value`` is ``"String with spaces"``, the output will be ``"Stringwithspaces
.. templatefilter:: date
date
~~~~
^^^^
Formats a date according to the given format.
@ -1346,7 +1346,7 @@ used, without applying any localization.
.. templatefilter:: default
default
~~~~~~~
^^^^^^^
If value evaluates to ``False``, use given default. Otherwise, use the value.
@ -1359,7 +1359,7 @@ If ``value`` is ``""`` (the empty string), the output will be ``nothing``.
.. templatefilter:: default_if_none
default_if_none
~~~~~~~~~~~~~~~
^^^^^^^^^^^^^^^
If (and only if) value is ``None``, use given default. Otherwise, use the
value.
@ -1376,7 +1376,7 @@ If ``value`` is ``None``, the output will be the string ``"nothing"``.
.. templatefilter:: dictsort
dictsort
~~~~~~~~
^^^^^^^^
Takes a list of dictionaries and returns that list sorted by the key given in
the argument.
@ -1408,7 +1408,7 @@ then the output would be:
.. templatefilter:: dictsortreversed
dictsortreversed
~~~~~~~~~~~~~~~~
^^^^^^^^^^^^^^^^
Takes a list of dictionaries and returns that list sorted in reverse order by
the key given in the argument. This works exactly the same as the above filter,
@ -1417,7 +1417,7 @@ but the returned value will be in reverse order.
.. templatefilter:: divisibleby
divisibleby
~~~~~~~~~~~
^^^^^^^^^^^
Returns ``True`` if the value is divisible by the argument.
@ -1430,7 +1430,7 @@ If ``value`` is ``21``, the output would be ``True``.
.. templatefilter:: escape
escape
~~~~~~
^^^^^^
Escapes a string's HTML. Specifically, it makes these replacements:
@ -1453,7 +1453,7 @@ multiple escaping passes to be applied, use the ``force_escape`` filter.
.. templatefilter:: escapejs
escapejs
~~~~~~~~
^^^^^^^^
Escapes characters for use in JavaScript strings. This does *not* make the
string safe for use in HTML, but does protect you from syntax errors when using
@ -1469,7 +1469,7 @@ the output will be ``"testing\\u000D\\u000Ajavascript \\u0027string\\u0022 \\u00
.. templatefilter:: filesizeformat
filesizeformat
~~~~~~~~~~~~~~
^^^^^^^^^^^^^^
Format the value like a 'human-readable' file size (i.e. ``'13 KB'``,
``'4.1 MB'``, ``'102 bytes'``, etc).
@ -1483,7 +1483,7 @@ If ``value`` is 123456789, the output would be ``117.7 MB``.
.. templatefilter:: first
first
~~~~~
^^^^^
Returns the first item in a list.
@ -1496,7 +1496,7 @@ If ``value`` is the list ``['a', 'b', 'c']``, the output will be ``'a'``.
.. templatefilter:: fix_ampersands
fix_ampersands
~~~~~~~~~~~~~~
^^^^^^^^^^^^^^
.. note::
@ -1521,7 +1521,7 @@ resembles a named entity.
.. templatefilter:: floatformat
floatformat
~~~~~~~~~~~
^^^^^^^^^^^
When used without an argument, rounds a floating-point number to one decimal
place -- but only if there's a decimal part to be displayed. For example:
@ -1563,7 +1563,7 @@ with an argument of ``-1``.
.. templatefilter:: force_escape
force_escape
~~~~~~~~~~~~
^^^^^^^^^^^^
Applies HTML escaping to a string (see the ``escape`` filter for details).
This filter is applied *immediately* and returns a new, escaped string. This
@ -1574,7 +1574,7 @@ filter.
.. templatefilter:: get_digit
get_digit
~~~~~~~~~
^^^^^^^^^
Given a whole number, returns the requested digit, where 1 is the right-most
digit, 2 is the second-right-most digit, etc. Returns the original value for
@ -1590,7 +1590,7 @@ If ``value`` is ``123456789``, the output will be ``8``.
.. templatefilter:: iriencode
iriencode
~~~~~~~~~
^^^^^^^^^
Converts an IRI (Internationalized Resource Identifier) to a string that is
suitable for including in a URL. This is necessary if you're trying to use
@ -1608,7 +1608,7 @@ If ``value`` is ``"?test=1&me=2"``, the output will be ``"?test=1&amp;me=2"``.
.. templatefilter:: join
join
~~~~
^^^^
Joins a list with a string, like Python's ``str.join(list)``
@ -1622,7 +1622,7 @@ If ``value`` is the list ``['a', 'b', 'c']``, the output will be the string
.. templatefilter:: last
last
~~~~
^^^^
Returns the last item in a list.
@ -1636,7 +1636,7 @@ If ``value`` is the list ``['a', 'b', 'c', 'd']``, the output will be the string
.. templatefilter:: length
length
~~~~~~
^^^^^^
Returns the length of the value. This works for both strings and lists.
@ -1649,7 +1649,7 @@ If ``value`` is ``['a', 'b', 'c', 'd']``, the output will be ``4``.
.. templatefilter:: length_is
length_is
~~~~~~~~~
^^^^^^^^^
Returns ``True`` if the value's length is the argument, or ``False`` otherwise.
@ -1662,7 +1662,7 @@ If ``value`` is ``['a', 'b', 'c', 'd']``, the output will be ``True``.
.. templatefilter:: linebreaks
linebreaks
~~~~~~~~~~
^^^^^^^^^^
Replaces line breaks in plain text with appropriate HTML; a single
newline becomes an HTML line break (``<br />``) and a new line
@ -1678,7 +1678,7 @@ slug</p>``.
.. templatefilter:: linebreaksbr
linebreaksbr
~~~~~~~~~~~~
^^^^^^^^^^^^
Converts all newlines in a piece of plain text to HTML line breaks
(``<br />``).
@ -1693,7 +1693,7 @@ slug``.
.. templatefilter:: linenumbers
linenumbers
~~~~~~~~~~~
^^^^^^^^^^^
Displays text with line numbers.
@ -1716,7 +1716,7 @@ the output will be::
.. templatefilter:: ljust
ljust
~~~~~
^^^^^
Left-aligns the value in a field of a given width.
@ -1731,7 +1731,7 @@ If ``value`` is ``Django``, the output will be ``"Django "``.
.. templatefilter:: lower
lower
~~~~~
^^^^^
Converts a string into all lowercase.
@ -1744,7 +1744,7 @@ If ``value`` is ``Still MAD At Yoko``, the output will be ``still mad at yoko``.
.. templatefilter:: make_list
make_list
~~~~~~~~~
^^^^^^^^^
Returns the value turned into a list. For a string, it's a list of characters.
For an integer, the argument is cast into an unicode string before creating a
@ -1761,7 +1761,7 @@ list ``[u'1', u'2', u'3']``.
.. templatefilter:: phone2numeric
phone2numeric
~~~~~~~~~~~~~
^^^^^^^^^^^^^
Converts a phone number (possibly containing letters) to its numerical
equivalent.
@ -1778,7 +1778,7 @@ If ``value`` is ``800-COLLECT``, the output will be ``800-2655328``.
.. templatefilter:: pluralize
pluralize
~~~~~~~~~
^^^^^^^^^
Returns a plural suffix if the value is not 1. By default, this suffix is ``'s'``.
@ -1808,7 +1808,7 @@ Example::
.. templatefilter:: pprint
pprint
~~~~~~
^^^^^^
A wrapper around `pprint.pprint`__ -- for debugging, really.
@ -1817,7 +1817,7 @@ __ http://docs.python.org/library/pprint.html
.. templatefilter:: random
random
~~~~~~
^^^^^^
Returns a random item from the given list.
@ -1830,7 +1830,7 @@ If ``value`` is the list ``['a', 'b', 'c', 'd']``, the output could be ``"b"``.
.. templatefilter:: removetags
removetags
~~~~~~~~~~
^^^^^^^^^^
Removes a space-separated list of [X]HTML tags from the output.
@ -1849,7 +1849,7 @@ output will be ``"<B>Joel</B> <button>is</button> a slug"``.
.. templatefilter:: rjust
rjust
~~~~~
^^^^^
Right-aligns the value in a field of a given width.
@ -1864,7 +1864,7 @@ If ``value`` is ``Django``, the output will be ``" Django"``.
.. templatefilter:: safe
safe
~~~~
^^^^
Marks a string as not requiring further HTML escaping prior to output. When
autoescaping is off, this filter has no effect.
@ -1882,7 +1882,7 @@ autoescaping is off, this filter has no effect.
.. templatefilter:: safeseq
safeseq
~~~~~~~
^^^^^^^
Applies the :tfilter:`safe` filter to each element of a sequence. Useful in
conjunction with other filters that operate on sequences, such as
@ -1897,7 +1897,7 @@ individual elements of the sequence.
.. templatefilter:: slice
slice
~~~~~
^^^^^
Returns a slice of the list.
@ -1914,7 +1914,7 @@ If ``some_list`` is ``['a', 'b', 'c']``, the output will be ``['a', 'b']``.
.. templatefilter:: slugify
slugify
~~~~~~~
^^^^^^^
Converts to lowercase, removes non-word characters (alphanumerics and
underscores) and converts spaces to hyphens. Also strips leading and trailing
@ -1929,7 +1929,7 @@ If ``value`` is ``"Joel is a slug"``, the output will be ``"joel-is-a-slug"``.
.. templatefilter:: stringformat
stringformat
~~~~~~~~~~~~
^^^^^^^^^^^^
Formats the variable according to the argument, a string formatting specifier.
This specifier uses Python string formatting syntax, with the exception that
@ -1947,7 +1947,7 @@ If ``value`` is ``"Joel is a slug"``, the output will be ``"Joel is a slug"``.
.. templatefilter:: striptags
striptags
~~~~~~~~~
^^^^^^^^^
Strips all [X]HTML tags.
@ -1961,7 +1961,7 @@ output will be ``"Joel is a slug"``.
.. templatefilter:: time
time
~~~~
^^^^
Formats a time according to the given format.
@ -2003,7 +2003,7 @@ used, without applying any localization.
.. templatefilter:: timesince
timesince
~~~~~~~~~
^^^^^^^^^
Formats a date as the time since that date (e.g., "4 days, 6 hours").
@ -2021,7 +2021,7 @@ date that is in the future relative to the comparison point.
.. templatefilter:: timeuntil
timeuntil
~~~~~~~~~
^^^^^^^^^
Similar to ``timesince``, except that it measures the time from now until the
given date or datetime. For example, if today is 1 June 2006 and
@ -2040,7 +2040,7 @@ date that is in the past relative to the comparison point.
.. templatefilter:: title
title
~~~~~
^^^^^
Converts a string into titlecase.
@ -2053,7 +2053,7 @@ If ``value`` is ``"my first post"``, the output will be ``"My First Post"``.
.. templatefilter:: truncatewords
truncatewords
~~~~~~~~~~~~~
^^^^^^^^^^^^^
Truncates a string after a certain number of words.
@ -2070,7 +2070,7 @@ Newlines within the string will be removed.
.. templatefilter:: truncatewords_html
truncatewords_html
~~~~~~~~~~~~~~~~~~
^^^^^^^^^^^^^^^^^^
Similar to ``truncatewords``, except that it is aware of HTML tags. Any tags
that are opened in the string and not closed before the truncation point, are
@ -2091,7 +2091,7 @@ Newlines in the HTML content will be preserved.
.. templatefilter:: unordered_list
unordered_list
~~~~~~~~~~~~~~
^^^^^^^^^^^^^^
Recursively takes a self-nested list and returns an HTML unordered list --
WITHOUT opening and closing <ul> tags.
@ -2118,7 +2118,7 @@ Note: An older, more restrictive and verbose input format is also supported:
.. templatefilter:: upper
upper
~~~~~
^^^^^
Converts a string into all uppercase.
@ -2131,7 +2131,7 @@ If ``value`` is ``"Joel is a slug"``, the output will be ``"JOEL IS A SLUG"``.
.. templatefilter:: urlencode
urlencode
~~~~~~~~~
^^^^^^^^^
Escapes a value for use in a URL.
@ -2158,7 +2158,7 @@ If ``value`` is ``"http://www.example.org/"``, the output will be
.. templatefilter:: urlize
urlize
~~~~~~
^^^^^^
Converts URLs in text into clickable links.
@ -2197,7 +2197,7 @@ Django's built-in :tfilter:`escape` filter. The default value for
.. templatefilter:: urlizetrunc
urlizetrunc
~~~~~~~~~~~
^^^^^^^^^^^
Converts URLs into clickable links just like urlize_, but truncates URLs
longer than the given character limit.
@ -2218,7 +2218,7 @@ As with urlize_, this filter should only be applied to plain text.
.. templatefilter:: wordcount
wordcount
~~~~~~~~~
^^^^^^^^^
Returns the number of words.
@ -2231,7 +2231,7 @@ If ``value`` is ``"Joel is a slug"``, the output will be ``4``.
.. templatefilter:: wordwrap
wordwrap
~~~~~~~~
^^^^^^^^
Wraps words at specified line length.
@ -2250,7 +2250,7 @@ If ``value`` is ``Joel is a slug``, the output would be::
.. templatefilter:: yesno
yesno
~~~~~
^^^^^
Given a string mapping values for true, false and (optionally) None,
returns one of those strings according to the value:
@ -2277,13 +2277,13 @@ enable explicitly in your :setting:`INSTALLED_APPS` setting and enable in your
template with the ``{% load %}`` tag.
django.contrib.humanize
~~~~~~~~~~~~~~~~~~~~~~~
^^^^^^^^^^^^^^^^^^^^^^^
A set of Django template filters useful for adding a "human touch" to data. See
:doc:`/ref/contrib/humanize`.
django.contrib.markup
~~~~~~~~~~~~~~~~~~~~~
^^^^^^^^^^^^^^^^^^^^^
A collection of template filters that implement these common markup languages:
@ -2294,13 +2294,13 @@ A collection of template filters that implement these common markup languages:
See the :doc:`markup documentation </ref/contrib/markup>`.
django.contrib.webdesign
~~~~~~~~~~~~~~~~~~~~~~~~
^^^^^^^^^^^^^^^^^^^^^^^^
A collection of template tags that can be useful while designing a Web site,
such as a generator of Lorem Ipsum text. See :doc:`/ref/contrib/webdesign`.
i18n
~~~~
^^^^
Provides a couple of templatetags that allow specifying translatable text in
Django templates. It is slightly different from the libraries described
@ -2311,7 +2311,7 @@ then loading it with ``{% load i18n %}``.
See :ref:`specifying-translation-strings-in-template-code`.
l10n
~~~~
^^^^
Provides a couple of templatetags that allow control over the localization of
values in Django templates. It is slightly different from the libraries described
@ -2319,3 +2319,68 @@ above because you don't need to add any application to the :setting:`INSTALLED_A
you only need to load the library using ``{% load l10n %}``.
See :ref:`topic-l10n-templates`.
static
^^^^^^
.. templatetag:: static
static
""""""
.. highlight:: html+django
To link to static files Django ships with a :ttag:`static` template tag. You
can use this regardless if you're using :class:`~django.template.RequestContext`
or not.
.. code-block:: html+django
{% load static %}
<img src="{% static "images/hi.jpg" %}" />
It is also able to consume standard context variables, e.g. assuming a
``user_stylesheet`` variable is passed to the template:
.. code-block:: html+django
{% load static %}
<link rel="stylesheet" href="{% static user_stylesheet %}" type="text/css" media="screen" />
.. templatetag:: get_static_prefix
get_static_prefix
"""""""""""""""""
.. highlight:: html+django
If you're not using :class:`~django.template.RequestContext`, or if you need
more control over exactly where and how :setting:`STATIC_URL` is injected
into the template, you can use the :ttag:`get_static_prefix` template tag
instead::
{% load static %}
<img src="{% get_static_prefix %}images/hi.jpg" />
There's also a second form you can use to avoid extra processing if you need
the value multiple times::
{% load static %}
{% get_static_prefix as STATIC_PREFIX %}
<img src="{{ STATIC_PREFIX }}images/hi.jpg" />
<img src="{{ STATIC_PREFIX }}images/hi2.jpg" />
.. templatetag:: get_media_prefix
get_media_prefix
""""""""""""""""
.. highlight:: html+django
Similar to the :ttag:`get_static_prefix`, ``get_media_prefix`` populates a
template variable with the media prefix :setting:`MEDIA_URL`, e.g.::
<script type="text/javascript" charset="utf-8">
var media_path = '{% get_media_prefix %}';
</script>

View file

@ -212,6 +212,42 @@ Django 1.4 also includes several smaller improvements worth noting:
Backwards incompatible changes in 1.4
=====================================
django.contrib.admin
~~~~~~~~~~~~~~~~~~~~
The included administration app ``django.contrib.admin`` has for a long time
shipped with a default set of static files such as JavaScript, images and
stylesheets. Django 1.3 added a new contrib app ``django.contrib.staticfiles``
to handle such files in a generic way and defined conventions for static
files included in apps.
Starting in Django 1.4 the admin's static files are now also following this
convention to make it easier to deploy the included files. In previous
versions of Django, it was also common to define a ``ADMIN_MEDIA_PREFIX``
setting to point to the URL where the admin's static files are served by a
web server. This setting has now been deprecated and replaced by the more
general setting :setting:`STATIC_URL`. Django will now expect to find the
admin static files under the URL ``<STATIC_URL>/admin/``.
If you've previously used a URL path for ``ADMIN_MEDIA_PREFIX`` (e.g.
``/media/``) simply make sure :setting:`STATIC_URL` and :setting:`STATIC_ROOT`
are configured and your web server serves the files correctly. The development
server continues to serve the admin files just like before. Don't hesitate to
consult the :doc:`static files howto </howto/static-files>` for further
details.
In case your ``ADMIN_MEDIA_PREFIX`` is set to an own domain (e.g.
``http://media.example.com/admin/``) make sure to also set your
:setting:`STATIC_URL` setting to the correct URL, for example
``http://media.example.com/``.
.. warning::
If you're implicitely relying on the path of the admin static files on
your server's file system when you deploy your site, you have to update
that path. The files were moved from :file:`django/contrib/admin/media/`
to :file:`django/contrib/admin/static/admin/`.
Compatibility with old signed data
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~