mirror of
				https://github.com/django/django.git
				synced 2025-10-31 01:25:32 +00:00 
			
		
		
		
	Refs #25484 -- Removed incorrect unquoting in {% static %}.
Regression in 374e6230ca.
Thanks Florian Apolloner for the report and analysis.
			
			
This commit is contained in:
		| @@ -2,7 +2,7 @@ from django import template | ||||
| from django.apps import apps | ||||
| from django.utils.encoding import iri_to_uri | ||||
| from django.utils.html import conditional_escape | ||||
| from django.utils.six.moves.urllib.parse import unquote, urljoin | ||||
| from django.utils.six.moves.urllib.parse import urljoin | ||||
|  | ||||
| register = template.Library() | ||||
|  | ||||
| @@ -102,7 +102,7 @@ class StaticNode(template.Node): | ||||
|         return self.handle_simple(path) | ||||
|  | ||||
|     def render(self, context): | ||||
|         url = unquote(self.url(context)) | ||||
|         url = self.url(context) | ||||
|         if context.autoescape: | ||||
|             url = conditional_escape(url) | ||||
|         if self.varname is None: | ||||
|   | ||||
| @@ -58,6 +58,11 @@ class PathNotImplementedStorage(storage.Storage): | ||||
|         raise NotImplementedError | ||||
|  | ||||
|  | ||||
| class QueryStringStorage(storage.Storage): | ||||
|     def url(self, path): | ||||
|         return path + '?a=b&c=d' | ||||
|  | ||||
|  | ||||
| class SimpleCachedStaticFilesStorage(CachedStaticFilesStorage): | ||||
|  | ||||
|     def file_hash(self, name, content=None): | ||||
|   | ||||
| @@ -1,5 +1,7 @@ | ||||
| from __future__ import unicode_literals | ||||
|  | ||||
| from django.test import override_settings | ||||
|  | ||||
| from .cases import StaticFilesTestCase | ||||
|  | ||||
|  | ||||
| @@ -8,5 +10,14 @@ class TestTemplateTag(StaticFilesTestCase): | ||||
|     def test_template_tag(self): | ||||
|         self.assertStaticRenders("does/not/exist.png", "/static/does/not/exist.png") | ||||
|         self.assertStaticRenders("testfile.txt", "/static/testfile.txt") | ||||
|         self.assertStaticRenders("test.html?foo=1&bar=2", "/static/test.html?foo=1&bar=2", autoescape=False) | ||||
|         self.assertStaticRenders("test.html?foo=1&bar=2", "/static/test.html?foo=1&bar=2", autoescape=True) | ||||
|         self.assertStaticRenders("special?chars"ed.html", "/static/special%3Fchars%26quoted.html") | ||||
|  | ||||
|     @override_settings(STATICFILES_STORAGE='staticfiles_tests.storage.QueryStringStorage') | ||||
|     def test_template_tag_escapes(self): | ||||
|         """ | ||||
|         Storage.url() should return an encoded path and might be overridden | ||||
|         to also include a querystring. {% static %} escapes the URL to avoid | ||||
|         raw '&', for example. | ||||
|         """ | ||||
|         self.assertStaticRenders('a.html', 'a.html?a=b&c=d') | ||||
|         self.assertStaticRenders('a.html', 'a.html?a=b&c=d', autoescape=False) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user