Code

Ticket #6346: url.diff

File url.diff, 1.6 KB (added by sorl, 7 years ago)
Line 
1--- defaulttags.py.old  2008-01-09 14:40:46.000000000 +0100
2+++ defaulttags.py      2008-01-09 14:44:27.000000000 +0100
3@@ -356,9 +356,26 @@
4 
5     def render(self, context):
6         from django.core.urlresolvers import reverse, NoReverseMatch
7-        args = [arg.resolve(context) for arg in self.args]
8-        kwargs = dict([(smart_str(k,'ascii'), v.resolve(context))
9-                       for k, v in self.kwargs.items()])
10+        args = []
11+        for arg in self.args:
12+            if arg[0] in ["'", '"'] and arg[0] == arg[-1]:
13+                arg = arg[1:-1]
14+            else:
15+                try:
16+                    arg = Variable(arg).resolve(context)
17+                except VariableDoesNotExist:
18+                    pass
19+            args.append(arg)
20+        kwargs = {}
21+        for k, v in self.kwargs.items():
22+            if v[0] in ["'", '"'] and v[0] == v[-1]:
23+                v = v[1:-1]
24+            else:
25+                try:
26+                    v = Variable(v).resolve(context)
27+                except VariableDoesNotExist:
28+                    pass
29+            kwargs[smart_str(k,'ascii')] = v
30         try:
31             return reverse(self.view_name, args=args, kwargs=kwargs)
32         except NoReverseMatch:
33@@ -1047,9 +1064,9 @@
34             if '=' in arg:
35                 k, v = arg.split('=', 1)
36                 k = k.strip()
37-                kwargs[k] = parser.compile_filter(v)
38+                kwargs[k] = v
39             else:
40-                args.append(parser.compile_filter(arg))
41+                args.append(arg)
42     return URLNode(bits[1], args, kwargs)
43 url = register.tag(url)
44