2013-08-06 208 views
4

我正在使用Django 1.5並嘗試將args傳遞給我的URL。當我使用前兩個參數時,下面的代碼工作正常,第三個參數出現錯誤。我已經提到了用於url用法的新Django 1.5更新,並相應地使用了URL名稱的引號。NoReverseMatch:帶參數'()'和關鍵字參數

NoReverseMatch: Reverse for 'add_trip' with arguments '()' and keyword arguments '{u'city': 537, u'score': 537, u'time': 35703, u'distance': 1196.61}' not found 

urls.py

url(
    r'^add/(?P<city>\w+)/(?P<score>\w+)/(?P<distance>\w+)/(?P<time>\w+)$', 
    'trips.views.add_trip', 
    name='add_trip' 
), 

HTML文件

<a href="{% url "add_trip" city=data.city score=data.score distance=data.distance time=data.time%}">Add/delete</a> 

如果我只使用有兩個參數(即城市和分數,然後正常工作),否則我得到沒有反向匹配錯誤。

views.py

def SearchTrips(request): 
    city = request.POST['city'].replace(" ","%20") 
    location = request.POST['location'].replace(" ","%20") 
    duration = request.POST['duration'] 
    #url = "http://blankket-mk8te7kbzv.elasticbeanstalk.com/getroutes?city=%s&location=%s&duration=%s" % (city, location, duration) 
    url= "http://blankket-mk8te7kbzv.elasticbeanstalk.com/getroutes?city=New%20York%20City&location=Park%20Avenue&duration=10" 
    print url 

    try: 
     resp = urllib2.urlopen(url) 
    except: 
     resp = None 

    if resp: 
     datas = json.load(resp) 
    else: 
     datas = None 

    return render(request, 'searchtrips.html', {'datas': datas}) 
+0

你能發表你的看法嗎? –

+0

我認爲regx存在一些問題,如果我將「分數」傳遞給所有參數,那麼我不會收到此錯誤。 – Mayank

+0

我想'data.time'不符合'\ w +'格式。仔細檢查一下。 –

回答

0

的距離值1196.61不匹配,因爲小數點的正則表達式。

您可以使用

(?P<distance>[\w\.]+) 
它匹配大寫字母A-Z

,小寫a-z,數字0-9,連字符和小數點。

或者,你可以使用

(?P<distance>[\d\.]+) 

其中僅匹配數字0-9和小數點。

+0

謝謝,這真的有幫助! – Mayank

相關問題