【发布时间】:2021-12-31 01:21:49
【问题描述】:
我目前正在开发一个冰球联盟管理网站。我目前正在开发的功能是输入“游戏报告”。比赛结束后,记分员会在此处输入该比赛的所有详细信息。游戏报告功能本身需要 3 个步骤才能完成。
-
选择您要为其输入报告的游戏。
-
填写两支球队名单的表格,每个球员都有一个复选框,用于标记他们是否参加了比赛。此外,如果他们还没有在名单上,还有 2 个单独的表单集可以为任何一支球队添加球员。
-
比赛报告的最后一部分,您可以在其中输入目标、点球和比赛结果。目标和点球是formset,而比赛结果是一个简单的模型形式。
混淆来自上一步的数据对于当前步骤是必需的这一事实。
选择游戏视图(第 1 步) - 此处没有问题
@login_required(login_url="/login/")
def selectGame(request):
games = Game.objects.all().values(
'iceSlot__date',
'homeTeam__name',
'awayTeam__name',
'id'
)
context = {'games': games}
return render(request, "home/select-game.html", context)
从第 1 步到第 2 步的转换发生在 select-game.html 中(也没有问题)
<a href="{% url 'gameReportRoster' game.id %}" class="btn btn-fill btn-primary btm-sm">Select</a>
gameReportRoster 视图(第 2 步)- 位于此处的问题试图获取来自该视图的数据,转到第 2 步
@login_required(login_url="/login/")
def gameReportRoster(request, pk):
# Need to add in to the Game Form, the season for the game
game = Game.objects.get(id=pk)
homeTeam = Team.objects.get(id=game.homeTeam_id)
awayTeam = Team.objects.get(id=game.awayTeam_id)
homeTeamPlayers = Player.objects.filter(team__id=homeTeam.id).all().values().order_by('lastName')
awayTeamPlayers = Player.objects.filter(team__id=awayTeam.id).all().values().order_by('lastName')
currentSeason = Season.objects.get(currentSeason=True)
formsetHomeTeam = PlayerFormSet(queryset=Player.objects.none(), prefix='home')
formsetAwayTeam = PlayerFormSet(queryset=Player.objects.none(), prefix='away')
games = Game.objects.all().values(
'iceSlot__date',
'homeTeam__name',
'awayTeam__name',
'id'
)
context = {
'games': games,
'homeTeam': homeTeam,
'awayTeam': awayTeam,
'homeTeamPlayers': homeTeamPlayers,
'awayTeamPlayers': awayTeamPlayers,
'formsetHomeTeam': formsetHomeTeam,
'formsetAwayTeam': formsetAwayTeam,
}
if request.method == 'POST':
OMMITED BUSINESS LOGIC HERE
allPlayersWhoPlayed = Player.objects.filter(id__in=allPlayedList)
teams = Team.objects.filter(id__in=teamList)
gameResultForm = GameResultForm(teams=teams)
formsetGoal = GoalFormSet(form_kwargs={'players': allPlayersWhoPlayed}, prefix='goal')
formsetPenalty = PenaltyFormSet(form_kwargs={'players': allPlayersWhoPlayed}, prefix='penalty')
context = {
'formsetGoal': formsetGoal,
'formsetPenalty': formsetPenalty,
'gameResultForm': gameResultForm
}
# return gameReportStats(request, context)
return render(request, "home/game-report-stats.html", context)
return render(request, "home/game-report-roster.html", context)
这是我完全陷入困境的地方,我需要将我从该视图创建的新 Context dict 放到这个视图中,它可以正确呈现所有内容
@login_required(login_url="/login/")
def gameReportStats(request, context):
if request.method == 'POST':
print('Test')
return render(request, "home/game-report-stats.html", context)
【问题讨论】:
-
我不明白被注释掉的
return gameReportStats(request, context)只是取消注释并删除return render(request, "home/game-report-stats.html", context) -
@Ahtisham 如果我删除这两个,我将如何访问我的模板并查看统计信息?主页/game-report-stats.html
-
我没有说只删除渲染部分
-
@Ahtisham 哦,我明白你现在的意思了,所以目前注释掉的原因,因为当我使用它时,URL 仍然显示相同,并且仍然显示 game-report-roster/PK .此外,当我使用它时,它会自动在 gameReportStats 中进行发布请求
-
我不明白你的问题,如果我错了,请纠正我你只想将你在
gameReportRoster创建的字典发送到gameReportStats,这样上下文就可以传递给@987654329 @html 上下文将在哪里显示?
标签: python django django-views django-templates