YassVegas
YassVegas

Reputation: 171

Django Redirect view with args

I have a problem with redirection in Django :

my view

def myP(request,namep):    
     return render(request,"site/myP.html")

def create(request):    
    nom="alaild"    
    ....    
    return redirect(reverse(myP,namep=nom))

urls to this views

url(r'^create$', 'create', name='create'),    
url(r'^myp/(?P<namep>\d+)','myP', name="myp"),

I have this error :

reverse() got an unexpected keyword argument 'name'

I want create view redirects to myP view but myP view have 1 argument and I don't know how make...

Upvotes: 0

Views: 1287

Answers (2)

Alasdair
Alasdair

Reputation: 309099

In your view, nom is a string, but in your url pattern you are using \d+ (one or more digits).

A common approach is to accept a 'slug' which can contain letters, digits, underscores and hyphens:

url(r'^myp/(?P<namep>[\w-]+)','myP', name="myp"),

Then you need to fix the syntax of your reverse call. Either of the following should work.

reverse(myP, kwargs={'namep': nom})
reverse(myP, args=(nom,))

Upvotes: 1

Alexander Sysoev
Alexander Sysoev

Reputation: 835

May be

reverse(myP, kwargs={'namep': nom})

Upvotes: 2

Related Questions