Django translate_url not working with optional parameters

40 views
Skip to first unread message

NKSM

unread,
Sep 26, 2019, 12:19:10 PM9/26/19
to Django users
I am using django 1.11.

My url is:
url(r'^apply(?:/(?P<pk>[\d-]+)/(?P<slug>[\w-]+))?.html$', applyview, name='applyview'),


Line to tranlate url:

translate_url('/nl/job/apply.html', "fr")


Django internal function:

def translate_url(url, lang_code):
   
"""
    Given a URL (absolute or relative), try to get its translated version in
    the `lang_code` language (either by i18n_patterns or by translated regex).
    Return the original URL if no translated version is found.
    """

    parsed
= urlsplit(url)
   
try:
        match
= resolve(parsed.path)
   
except Resolver404:
       
pass
   
else:
        to_be_reversed
= "%s:%s" % (match.namespace, match.url_name) if match.namespace else match.url_name
       
with override(lang_code):
           
try:
                url
= reverse(to_be_reversed, args=match.args, kwargs=match.kwargs)
           
except NoReverseMatch:
               
pass
           
else:
                url
= urlunsplit((parsed.scheme, parsed.netloc, url, parsed.query, parsed.fragment))
   
return url


Django can not tranlate url  get an error NoReverseMatch because kwargs are None. ({'pk': None, 'slug': None}).
By my parameters are optional. 


Does anyone have an idea, how can that be solved?


Reply all
Reply to author
Forward
Message has been deleted
0 new messages