【发布时间】:2018-06-11 21:59:39
【问题描述】:
我在基于 django 类的视图中有一个方法,例如 get_player_stats。从这个方法我想在同一个类中调用另一个方法,但我不能。代码如下:
class ScoreView(TemplateView):
def get_player_stats(request):
player_id = request.GET.get(player_id, None)
# compute player stats
#here I want to call like below:
self.get_team_stats(player_id)
def get_team_stats(self, player_id):
#compute team stats
当我运行它时,它会显示name 'self' is not defined
如果我尝试def get_player_stats(self, request):,它会显示missing 1 required positional argument: 'request'
如果我尝试def get_player_stats(request, self):,它会显示missing 1 required positional argument: 'self'
如何从get_player_stats 拨打get_team_stats?
这很令人沮丧,非常感谢任何帮助
P.S:我通过定义如下 URL 路径将 get_player_stats 称为 ajax 调用:
url('score/get_player_stats', views.ScoreView.get_player_stats)
然后我使用 $.ajax 和 url: '/score/get_player_stats' 调用它
【问题讨论】:
-
这不是你如何定义事物,而是你如何调用事物。
-
@WillemVanOnsem - 我对 django 很陌生。能否请您详细说明一下?
-
你在哪里打电话
get_player_stats? (不是get_team_stats)? -
我建议将
get_player_stats逻辑提取到外部辅助模块函数中,然后从两个视图中调用它。 -
@UndefinedVariable:我认为您使用
TemplateView的方式错误。基于类的视图的想法是您可以声明template、queryset等。但想法是您可以不简单地调用任意函数。见这里:docs.djangoproject.com/en/2.0/ref/class-based-views/base/…
标签: python django django-views