2012-03-05 3 views
3

Я пытаюсь создать простое приложение для возврата остатка, учитывая два входа из параметров GET. Эти входы будут взяты из запроса url.GAE ValueError с параметрами GET

Например http://thisisanexample.appspot.com/?a=1&b=2 Это должно привести к ответу 1, так как оставшуюся часть 2/1 = 1.

a = self.request.get('a') 
    b = self.request.get('b') 
    c = 0 
    if (int(a)>int(b)): 
     c=int(a)%int(b) 
    else: 
     c=int(b)%int(a) 
    self.response.out.write(type(a)) 

Однако, я бегу в следующую ValueError проблему: ValueError: неверный буквальным для междунар () с базой 10: ''

Я предполагаю, что проблема заключается в том, что переменные ранее неизвестны и могут начинаться как или не указывать, оставаться как '' таким образом, создавая ошибку. Любая помощь приветствуется!

+1

Что говорит 'self.response.out.write (type (a))' tell you? – bos

+1

Не уверен в вашей математике. 2 mod 1 равно 0, так как 2/1 = 2 не 1. –

+0

Хмм, по какой-то причине это ничего мне не дает. он отвечает, если я даю суперпростую команду, например self.response.out.write (a), которая дает мне значение a ... , и вы правы - отредактировали его до вышеуказанной, но все той же ошибки –

ответ

5

параметры GET сохраняются в request.GET, а не в самом запросе, так что вы хотите изменить свой код

a = request.GET.get('a') 
b = request.GET.get('b') 

И BTW, где вы написали этот код? Что такое self.request? Если вы пишете взгляд, это Шоуда быть просто:

def my_view(request, *args, **kwargs): 
    # access request here 

request.GET не определен на объекте Django HttpRequest ...

: редактировать:

GAE не совсем Джанго , Приводя GAE's documentation:

By default, get() returns the empty string ('')

Так что ваш код правильно, но вместо того, чтобы проверить ли a или b являются None, вы должны проверить пустые строки.

+0

Спасибо! Я использую coderbuddy и GAE. Для определения себя использовалось следующее. из google.appengine.ext импорта веб-приложение из google.appengine.ext.webapp.util импорта run_wsgi_app импорта зева из шаблона google.appengine.ext.webapp импорта класс MainPage (webapp.RequestHandler): Защиту получить (self): –

+0

GAE не является django, вы должны изменить теги и, возможно, указать GAE в заголовке вопроса ... См. обновленный ответ – StefanoP

+0

На самом деле, используя ** Class based views **, 'self.request' имеет смысл. См. Здесь: https://docs.djangoproject.com/en/dev/topics/class-based-views/ (Но я оставлю это вам, что это не совсем так). –

1

Вы должны использовать GET dict для вашего запроса, так как используемый вами метод get является членом класса QueryDict. Кроме того, в данном случае это может быть полезно использовать параметр по умолчанию метод прибудут обеспечивает:

try: 
    a = int(self.request.GET.get('a', 0)) 
    b = int(self.request.GET.get('b', 1)) 
except TypeError: 
    # Could not cast to int 
# Do what you want 
+0

А это очень полезно! Извините, что они выглядят noobish, но являются 0 и 1 предопределенными значениями? –

+0

Да, '0' и' 1' - значения 'a' и' b' будут по умолчанию, если они не найдены в 'GET' dict. – nijansen

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