2012-02-16 2 views
0

Вот мой фрагмент кода из функции просмотра в django-Джанго request.GET [] Сравнение строк провал

dir = '' 
    if (''+request.GET['dir']) == 'U': 
     dir = 'U' 
     elif (''+request.GET['dir']) == 'D': 
     dir = 'D' 

Но когда я проверяю, если реж == «D» или реж == «U ', сравнение терпит неудачу. Напр. Следующий код не удается (то же самое для сравнения с «U»)

if dir == 'D': 
     user_voted.vote = 'D' 
     obj.score -= 2 
     user_voted.save() 
     obj.save() 

Я чувствую, что каталог не установка на «U» или «D». Я даже попытался установить dir = request.GET ['dir'], который должен установить его на «U» или «D», но сравнения все равно не сработают. Может ли кто-нибудь сказать мне, если request.GET возвращает не-строку или строку в сравнение с char, вызывает это, или я устанавливаю его неправильно или что.

Спасибо за внимание.

+1

Вы можете распечатать то, что значения ? Здесь информации недостаточно. – jterrace

+0

В чем смысл этого '' '+ request.GET [' dir '] 'pattern? –

+0

Daniel, я пытался это сделать, чтобы цитировать строку в явном виде, поскольку сравнения не выполнялись, если я назначил dir = request.GET ['dir'] – Eternity

ответ

0

Я не уверен, почему вы объединяете строки и переставляете переменные. Попробуйте упростить:

dir = request.GET.get('dir', None) 
if dir == "U": 
    ... 
elif dir =="D": 
    ... 

Если это по-прежнему не работает, попробуйте напечатать request.GET словарь, чтобы увидеть, если есть на самом деле является dir параметр передается (должно быть)

+0

Pastylegs, я тоже это пробовал, но он все еще не работает, и мой URL-адрес запроса «GET/vote /? Id = 1 & type = link & dir = D' HTTP/1.1", поэтому я считаю, что каталог правильно задан в запросе get. Код внутри 'if dir ==' U 'или dir ==' D 'никогда не будет выполнен. – Eternity

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