Django Вызов представления из представления не изменяет URL-адрес

У меня есть два представления. Одно называется gameReportRoster, а другое gameReportStats.

Основной поток представлений выглядит следующим образом:

gameReportRoster получает PK от другого представления. Затем он отображает некоторые формы и обрабатывает некоторые данные, чтобы получить список игроков, которые играли в игре, а также игроков, которые добавляются в состав.

Когда пользователь нажимает кнопку submit, некоторая бизнес-логика завершается, а некоторые данные сохраняются во временной модели. В этот момент нам нужно вызвать gameReportStats, чтобы отобразить следующий набор форм. При вызове gameReportStats нам нужно передать ему одну переменную под названием game.

Проблема, с которой я столкнулся, заключается в том, что когда мы вызываем gameReportStats, URL не меняется. Таким образом, Post Request обрабатывается в gameReportRoster, хотя сейчас мы должны быть в gameReportStats.

def gameReportRoster(request, pk):

@login_required(login_url="/login/")
def gameReportRoster(request, pk):
    **QUERIES AND FORM RENDERING HERE**

    if request.method == 'POST':
        if 'submitRoster' in request.POST:
            print('submitRoster Was Pressed')

            homePlayedList = request.POST.getlist('homePlayed')
            awayPlayedList = request.POST.getlist('awayPlayed')

            formsetHome = PlayerFormSet(data=request.POST, prefix='home')
            formsetAway = PlayerFormSet(request.POST, prefix='away')

            **OMMITED FORM PROCESSING DONE HERE FOR READABILITY**

            tempGameResult = TempGameResults(game=game)
            tempGameResult.save()

            tempGameResult.homePlayers.set(homePlayersPlayed)
            tempGameResult.awayPlayers.set(awayPlayersPlayed)

            return gameReportStats(request, game)

    **MORE QUERIES AND FORM RENDERING HERE**

    return render(request, "home/game-report-roster.html", context)

def gameReportStats(request, game):

@login_required(login_url="/login/")
def gameReportStats(request, game):
    tempGameResult = TempGameResults.objects.get(game=game)
    # teams = Team.objects.filter(id__in=teamList)
    homeTeam = Team.objects.get(id=game.homeTeam_id)
    awayTeam = Team.objects.get(id=game.awayTeam_id)
    teamList = [homeTeam.id, awayTeam.id]
    teams = Team.objects.filter(id__in=teamList)
    homePlayersPlayed = Player.objects.filter(id__in=tempGameResult.homePlayers.values_list('id'))
    awayPlayersPlayed = Player.objects.filter(id__in=tempGameResult.awayPlayers.values_list('id'))

    gameResultForm = GameResultForm(teams=teams)

    formsetGoalHome = GoalFormSet(
        queryset=Goal.objects.none(),
        form_kwargs={'players': homePlayersPlayed},
        prefix='goalHome'
    )
    formsetGoalAway = GoalFormSet(
        queryset=Goal.objects.none(),
        form_kwargs={'players': awayPlayersPlayed},
        prefix='goalAway'
    )
    formsetPenaltyHome = PenaltyFormSet(
        queryset=Penalty.objects.none(),
        form_kwargs={'players': homePlayersPlayed},
        prefix='penaltyHome'
    )
    formsetPenaltyAway = PenaltyFormSet(
        queryset=Penalty.objects.none(),
        form_kwargs={'players': awayPlayersPlayed},
        prefix='penaltyAway'
    )

    context = {
        'formsetGoalHome': formsetGoalHome,
        'formsetPenaltyHome': formsetPenaltyHome,
        'formsetGoalAway': formsetGoalAway,
        'formsetPenaltyAway': formsetPenaltyAway,
        'gameResultForm': gameResultForm,
        'homeTeam': homeTeam,
        'awayTeam': awayTeam,
    }


    ** THIS IF NEVER GETS CALLED **
    if request.method == 'POST':
        print('Test')
    ** TEMPLATE GETS PROPERLY RENDERED, BUT URL NEVER CHANGES **
    return render(request, "home/game-report-stats.html", context)

urls.py

path('game-report-roster/<str:pk>', views.gameReportRoster, name="gameReportRoster"),
path('game-report-stats/', views.gameReportStats, name="gameReportStats"),

как выглядит фактический URL

http://127.0.0.1:8000/game-report-roster/fc4cd6db-d7f9-43b3-aa80-f9d4abfff0e5

Можно вместо

return gameReportStats(request, game)

try:

return redirect('myappname:your_name_in_urls.py', game)

Вернуться на верх