Есть ли в Django способ перенаправить на представление из отдельного представления с аргументами для функции этого представления?

Я не могу найти способ перенаправления на другое представление с аргументами для этого представления в Django. Я пробовал метод django.shortcuts redirect, но он, похоже, не работает (похоже, он хочет взять шаблоны для шаблона url, а не для функции представления. Функция HttpResponseRedirect, очевидно, не работает, потому что эта функция просто перенаправляет на другой url. Какие еще есть варианты?

Похоже, вы хотите дать перенаправление и хотите дать параметр, который так легко можно сделать

x.order_total= total+shipping_total
        x.save()
        return redirect(f'/order/payment/{order_number}')

Здесь я вставил только фрагмент моего представления, которое делает это, вы можете вставить параметр с помощью f вне строки, если у вас есть совпадающий url, он будет работать нормально

Вы можете перенаправить на другой вид с параметром(ами), используя reverse, который не использует жестко закодированный url вместо имени url, так как редирект использует это internally

def view_one(request):
    return redirect('view_two', arg=arg)

По умолчанию редирект будет делать временный редирект, для постоянного редиректа вы должны указать его, чтобы узнать разницу между ними, посмотрите здесь

Для заполнения шаблона URL можно использовать обратную функцию Вы можете импортировать обратную функцию с помощью следующей строки:

from django.core.urlresolvers import reverse

Если у вас есть URL, подобные этому, вы можете использовать реверс:

url(r'^project/(?P<project_id>\d+)/$','user_profile.views.EditProject',name='edit_project'),
path('project/<str:project_id>/', name='edit_project'),

использование:

redirect(reverse('edit_project', kwargs={'project_id':4}))

или:

redirect(reverse('app_name:edit_project', kwargs={'project_id':4}))

Док здесь

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