このAPIを公開するには、Djangoのreverseメソッドをラップする方が良いと思います。これを行うための簡単なコードを次に示します。
from django.core.urlresolvers import reverse as django_reverse
def reverse(viewname, urlconf=None, args=None, kwargs=None, prefix=None, current_app=None):
"""
Wrapper of django.core.urlresolvers.reverse that attaches arguments in kwargs as query string parameters
"""
if kwargs:
return '%s?%s' % (django_reverse(viewname, urlconf, args, None, prefix, current_app), \
'&'.join(['%s=%s' % (k,v) for k,v in kwargs.items()]))
else:
return django_reverse(viewname, urlconf, args, kwargs, prefix, current_app)
このコードをDjangoのみに依存するユーティリティまたは一般的なアプリに配置し、django.core.urlresolvers.reverseをインポートする代わりに、myproject.myutils.urlresolvers.reverseをインポートします。