Я хочу получить текущий идентификатор транзакции в URL-адресе. она должна быть, как этоПолучить параметры URL в Django
www.example.com/final_result/53432e1dd34b3
.
я написал следующие коды, но после успешной оплаты, я перенаправлены на страницу 404.
(www.example.com/final_result//)
Views.py
@csrf_exempt
def pay_notif(request, v_transaction_id):
if request.method=='POST':
v_transaction_id=request.POST.get('transaction_id')
endpoint='https://testpay.com/?v_transaction_id={0}&type=json'
req=endpoint.format(v_transaction_id)
last_result=urlopen(req).read()
if 'Approved' in last_result:
session=Pay.objects.filter(session=request.session.session_key).latest('id')
else:
return HttpResponse(status=204)
return render_to_response('final.html',{'session':session},context_instance=RequestContext(request))
Urls.py
url(r'^final_result/(?P<v_transaction_id>[-A-Za-z0-9_]+)/$', 'digiapp.views.pay_notif', name="pay_notif"),
Шаблон:
<input type='hidden' name='v_merchant_id' value='{{newpayy.v_merchant_id}}' />
<input type='hidden' name='item_1' value='{{ newpayy.esell.up_name }}' />
<input type='hidden' name='description_1' value='{{ newpayy.esell.up_description }}' />
<input type='hidden' name='price_1' value='{{ newpayy.esell.up_price }}' />
#page to be redirected to after successful payment
<input type='hidden' name='success_url' value='http://127.0.0.1:8000/final_result/{{newpayy.v_transaction_id}}/' />
Как я могу идти об этом?
Спасибо за ответ. Я сделал это: value = "{% url pay_notif v_transaction_id%}", но я получаю обратную ошибку.Reverse для 'pay_notif' с аргументами '(' ',)' и аргументы ключевого слова '{}' не найдены. – picomon
Похоже, вы даже не прочитали первую (и самую важную) часть ответа. Пожалуйста, сделайте себе одолжение и прочитайте FineManual для части о шаблонах и контексте: https://docs.djangoproject.com/en/1.6/ref/templates/api/#rendering-a-context - это сэкономит вам довольно много боли. –
На самом деле я это сделал. «Newpayy» имеет другое представление. И представление отвечает за запрос POST, посредством которого пользователи будут вводить свой адрес электронной почты, номер телефона. добавление «v_transaction_id» в def confam_pay (запрос): return render_to_response ('confam_pay.html', {'newpayy': Pay.objects.filter() .последний ('id')}, context_instance = RequestContext (запрос)) вызовет ошибку, поэтому я пытаюсь выяснить, как это сделать. – picomon