Как передать данные из представления django в другие представления без globall
Итак, я использую платеж, который имеет представление под названием verify, и оно собирается проверить, если результат был Ok, сделать что-то. Но мне нужно передать order_id в предыдущем представлении, который является токеном из url в это представление. некоторые предложили использовать global. но я боюсь ошибки на реальном сервере .
Если вам нужно . Его код :
Предыдущее представление, отправляющее запрос в платежный центр :
def send_request(request , order_id):
i = order_id
amount = get_object_or_404(Order , id = i , user_id = request.user.id)
result = client.service.PaymentRequest(MERCHANT , amount.total , description , email , mobile , CallbackURL)
if result.Status == 100 :
return redirect('https://www.zarinpal.com/pg/StarPay' + str(result.Authority))
else :
return HttpResponse('error code : ' , str(result.Status))
А мне нужен order_id в следующем представлении
SO что я могу сделать?? Помогите пожалуйста!
Передача данных из одного представления в другое может быть выполнена в Django несколькими способами.
Вы можете использовать параметр url :
def present_view(request):
if condition:
return reverse('next_view', args(order_id))
return render(request, 'present_view.html', locals())
def next_view(request, order_id):
# Retrieve order_id from url parameter
id = order_id
# Do some stuff with id here
urls.py
path('present_view/', views.present_view, name=present_view),
path('next_view/<int:order_id>/', views.next_view, name=next_view)
Вы можете использовать сессию :
def present_view(request):
if condition:
# Set the id in the session
request.session['order_id'] = 'some_id_123'
return reverse('next_view', args(order_id))
return render(request, 'present_view.html', locals())
def next_view(request, order_id):
# Retrieve order_id from session, id = 0 if order_id is not found
id = request.session.get('order_id', 0)
# Do some stuff with id here
urls.py
path('present_view/', views.present_view, name=present_view),
path('next_view/', views.next_view, name=next_view)