2013-11-12 2 views
-2

Я хочу получить текущий идентификатор транзакции в 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}}/' /> 

Как я могу идти об этом?

ответ

1

В вызове render_to_response вы передаете контекст с помощью одного ключа «сеанс» FWIW, который будет разбит на запрос GET, поскольку имя «сеанс» определено только в вашем представлении для запроса POST). В шаблоне вы ссылаетесь на имя «newpayy», которого, очевидно, не существует. В качестве примечания следует использовать тег шаблона {% url %} вместо жесткого кодирования вашего URL-адреса.

+0

Спасибо за ответ. Я сделал это: value = "{% url pay_notif v_transaction_id%}", но я получаю обратную ошибку.Reverse для 'pay_notif' с аргументами '(' ',)' и аргументы ключевого слова '{}' не найдены. – picomon

+0

Похоже, вы даже не прочитали первую (и самую важную) часть ответа. Пожалуйста, сделайте себе одолжение и прочитайте FineManual для части о шаблонах и контексте: https://docs.djangoproject.com/en/1.6/ref/templates/api/#rendering-a-context - это сэкономит вам довольно много боли. –

+0

На самом деле я это сделал. «Newpayy» имеет другое представление. И представление отвечает за запрос POST, посредством которого пользователи будут вводить свой адрес электронной почты, номер телефона. добавление «v_transaction_id» в def confam_pay (запрос): return render_to_response ('confam_pay.html', {'newpayy': Pay.objects.filter() .последний ('id')}, context_instance = RequestContext (запрос)) вызовет ошибку, поэтому я пытаюсь выяснить, как это сделать. – picomon

Смежные вопросы