[Answer]-NoReverseMatch at /detail/ Reverse for '' with arguments '()' and keyword arguments {} not found

1πŸ‘

It looks like it is a problem with your regex for the url.

What you have

(?P<city>[-\w])

will match only 1 digit, word character, whitespace, underscore, or hyphen. What you should have is

(?P<city>[-\w]+)

which will match 1 or more like you do with the rest of them.


The other thing is that you can try is changing

url = reverse('display_filter', args=(), kwargs={'continent':param1,'country':param2,'city':param3,'street':param4})
return redirect(url)

to

return redirect('display_filter', continent=param1, country=param2, city=param3, street=param4)

redirect is meant to be a shortcut so you don’t have to call reverse since it does that for you.

πŸ‘€Ngenator

0πŸ‘

I think you need to do two things:

  1. Add a URL to your urls.py that matches with your 3 params case:

    url(r'^display_filter/(?P[-\w]+)/(?P[-\w]+)/(?P[-\w]+)/$', 'examples.views.display_filter', name='display_filter'),

  2. You must set a default value for the fourth param in your view method:

    def display_filter(request, continent, country, city, street=None):

Then, you can call the URL just with three params.

πŸ‘€jjimenez

Leave a comment