2013-08-06 2 views
4

Я использую Django 1.5 и пытаюсь передать аргументы в свой URL. Когда я использую первые два аргумента, то приведенный ниже код работает нормально, а с третьими аргументами я получаю сообщение об ошибке. Я уже упоминал о новом обновлении Django 1.5 для использования url и, соответственно, котировках для имени 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

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