user1629366
user1629366

Reputation: 2011

django named url not picking variables

I have the following url pattern -

url(r'^detail/(?P<var>[\w]+)/(?P<var_slug>[\w-])/$', 'player_detail', name='player_detail'),

In my view, I have the following -

model_dict = {"player":PlayerProfile, "event":PlayerEvent, "need":PlayerNeed}
def player_list(request, var=None, var_slug=None):
    '''
    displays the list of vars
    '''
    objs = model_dict.get(var).objects.filter(slug=var_slug).order_by('-creation_time')[:20]
    template_name = "list_"+str(var)+"s.html"
    return render(request, template_name, {"objs":objs})

In my templates I finally do the following -

<a href="{% url 'player_detail' var='baseball' slug='obj.slug'  %}">details of Player</a>

The error I get is following -

Reverse for 'player_detail' with arguments '()' and keyword arguments '{u'var': u'baseball', u'slug': u'obj.slug'}' not found.

What am I missing?

also, is it a good way to pick models dynamically depending on the variable in the parameter, and generating a template name on the fly?

Upvotes: 0

Views: 62

Answers (1)

slug='obj.slug' should be slug=obj.slug

Your regex doesn't match a .

Also you probably want[\w-]+ just like your other regex.. one or more [\w or -]

Upvotes: 3

Related Questions