将包含所有数据的 POST 请求重定向到 url

Redirect a POST request with all the data to a url

有没有办法将 POST 请求重定向到另一个包含所有数据的 URL。

# views.py
@verified_email_required
def user_page(request, pk, username):
    if request.method == 'POST':
        if request.POST.get('_name', '') == 'toggle_pin':
            auth_profile = Profile.objects.filter(user=request.user).first()
            profile = Profile.objects.filter(pk=int(request.POST.get('profile', ''))).first()
            fav = Favourite.objects.filter(profile=auth_profile, pinned_profile=profile).first()
            if fav.pinned == True:
                fav.pinned = False
            else:
                fav.pinned = True
            fav.save()
            return JsonResponse(data={
                'status': fav.pinned,
            })

    # page profile (Profile of the user who's page being is visited)
    # (also give 404 error if user does not exists)
    page_user = get_object_or_404(User, pk=pk)
    if (page_user.username != username):
        return redirect(f'/u/{page_user.pk}-{page_user.username}/')

    # page profile
    page_profile = Profile.objects.filter(user=page_user).first()

    context = {
        'page_profile': page_profile,
    }
    return render(request, 'user/profile.html', context)

@verified_email_required
def redirect_profile_page(request, pk):
    if request.method == 'POST':
        # storing the POST data in session is not a good practice
        # Waht can we do else
        request.session['_old_post'] = request.POST
        return redirect(f'/u/{page_user.pk}-{page_user.username}/')

    page_user = get_object_or_404(User, pk=pk)
    return redirect(f'/u/{page_user.pk}-{page_user.username}/')

redirect_profile_page 视图中,我根据 GET 请求将用户重定向到 user_page 视图。

如何在 POST 请求中执行此操作?

非常感谢任何帮助!

谢谢。

无需在 POST 上重定向,您可以直接调用其他视图函数:

@verified_email_required
def redirect_profile_page(request, pk):
    page_user = get_object_or_404(User, pk=pk)
    if request.method == 'POST':
        return user_page(request, pk, page_user.username)
    ...

另一个视图将处理并执行重定向。

如果您真的想重定向,可以使用 HTTP status code 307,它将使用相同的方法和数据进行重定向。