我必须测试看起来像这样的网址:
但我不确定如何对reverse()
函数说这个。这是我的urls.py
from django.conf.urls import patterns, url
from payment import views
from payment.msn import *
urlpatterns = patterns('',
url(r'^$', views.index, name='index'),
url(r'^msnstats/', MsnStats.finish_transaction, name='finish_transaction'),
url(r'^pay/(?P<payment_id>\w+)/$', views.pay, name='pay')
)
这就是我的views.py的相关部分:
def pay(request, payment_id):
try:
plan=PaymentPlan.objects.get(payment_id=payment_id)
为每个计划生成payment_id
,因此我首先创建一个计划,从数据库中获取其payment_id
,然后以某种方式调用它。我只是不确定如何使用反向。
答案 0 :(得分:2)
from django.core.urlresolvers import reverse
url = reverse('pay', args=[plan.payment_id])
或
url = reverse('pay', kwargs={'payment_id': plan.payment_id})
两个版本都有效。
更新:如果您将payment.urls
包含namespace
参数,那么您必须将此命名空间添加到reverse()
调用中的网址名称:
<强>项目/ urls.py 强>:
url(r'^payment/', include('payment.urls', namespace='payment')),
付款/ tests.py 强>:
response = self.client.get(reverse('payment:pay', args=[plan.payment_id]))