在Django中获取Url参数

时间:2013-11-12 09:29:46

标签: python django django-views

我想在url中获取当前的事务ID。它应该是这样的

  

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 个答案:

答案 0 :(得分:1)

在对render_to_response的调用中,您传递一个带有单个键“session”FWIW的上下文,它将在GET请求中断,因为名称“session”仅在您的视图中为POST请求定义)。在模板中,您引用名称“newpayy”,这显然不存在。作为旁注,您应该使用{% url %}模板标记,而不是硬编码您的网址。