Adding url() helper that wraps the django.core.urlresolvers.reverse() function.

This commit is contained in:
Jeremy Blanchard
2011-10-17 11:03:01 -07:00
committed by Wiggins
parent 474d7de291
commit 54ba3493be
4 changed files with 23 additions and 1 deletions

View File

@@ -5,7 +5,7 @@ path = lambda *a: os.path.join(ROOT, *a)
ROOT = os.path.dirname(os.path.abspath(__file__))
INSTALLED_APPS = (
'jingo.tests.jinja_app',
'jingo.tests.django_app'
'jingo.tests.django_app',
)
TEMPLATE_LOADERS = (
'jingo.Loader',
@@ -14,3 +14,4 @@ TEMPLATE_LOADERS = (
)
TEMPLATE_DIRS = (path('jingo/tests/templates'),)
JINGO_EXCLUDE_APPS = ('django_app',)
ROOT_URLCONF = 'jingo.tests.urls'

View File

@@ -1,6 +1,7 @@
from django.utils.translation import ugettext as _
from django.template.defaulttags import CsrfTokenNode
from django.utils.encoding import smart_unicode
from django.core.urlresolvers import reverse
import jinja2
@@ -73,3 +74,9 @@ def field_attrs(field_inst, **kwargs):
"""Adds html attributes to django form fields"""
field_inst.field.widget.attrs.update(kwargs)
return field_inst
@register.function
def url(viewname, *args, **kwargs):
"""Return URL using django's ``reverse()`` function."""
return reverse(viewname, args=args, kwargs=kwargs)

View File

@@ -119,3 +119,11 @@ def test_field_attrs():
s = render('{{ field|field_attrs(class="bar",name="baz") }}',
{'field': f})
eq_(s, '<input class="bar" name="baz" />')
def test_url():
# urls defined in jingo/tests/urls.py
s = render('{{ url("url-args", 1, "foo") }}')
eq_(s, "/url/1/foo/")
s = render('{{ url("url-kwargs", word="bar", num=1) }}')
eq_(s, "/url/1/bar/")

6
jingo/tests/urls.py Normal file
View File

@@ -0,0 +1,6 @@
from django.conf.urls.defaults import patterns
urlpatterns = patterns('',
(r'^url/(\d+)/(\w+)/$', lambda r: None, {}, "url-args"),
(r'^url/(?P<num>\d+)/(?P<word>\w+)/$', lambda r: None, {}, "url-kwargs"),
)