如何使用django.views访问子对象

时间:2012-03-14 17:55:14

标签: django django-views

我有两个模特Team,Player。玩家对团队有一个关键因素。

现在我想要一个视图,并像我这样定义了我的urls.py

    url(r'^team/(?P<team_id>)/player/(?P<player_id>)/$', 'djangocricket.Cricket.views.player'), 

如果我定义我的视图

def player(request, team_id, player_id):
    template = get_template('player.html')
    loggedinuser = request.user
    team = Team.objects.get(id=team_id)
    player = Player.objects.get(id=player_id)

    page_vars = Context({
        'loggedinuser': loggedinuser,
        'team': team,
        'player': player,
    })

    output = template.render(page_vars)
    return HttpResponse(output)

它给了我这个错误。

url() takes at least 2 arguments (1 given)

非常感谢帮助。

//小鼠

2 个答案:

答案 0 :(得分:2)

问题出在你的urls.py声明中。您需要在请求此URL时添加要调用的视图。 url需要这两个参数。

url(r'^team/(<team_id>\w+)/player/(<player_id>\w+)', 'views.player'),

另外,正如BéresBotond所说,我也认为模式看起来不正确。正如他所说,将?P添加到每个模式的开头,就在括号内。

答案 1 :(得分:1)

在您的网址中,您还需要告诉它该模式指向的视图。此外,模式中的参数未正确定义。应该是这样的:

url(r'^team/(?P<team_id>\w+)/player/(?P<player_id>\w+)/$', 'myproject.myapp.views.player'),

有关详细信息,请查看urlconf文档:https://docs.djangoproject.com/en/1.3/topics/http/urls/