2009-08-06 3 views
3

Google App Engine을 사용하여 데이터를 단일 항목에서 단일 페이지로 검색 할 때 다음 오류가 발생했습니다. foobar.com/page/1가 ID 1에서 모든 데이터를 표시합니다 : 여기 ValueError : 밑이 10 인 int()에 대한 리터럴이 잘못되었습니다.

ValueError: invalid literal for int() with base 10 

이 파일은 다음과 같습니다

Views.py

class One(webapp.RequestHandler):  
    def get(self, id): 
     id   = models.Page.get_by_id(int(str(self.request.get("id")))) 
     page_query = models.Page.get(db.Key.from_path('Page', id)) 
     pages  = page_query 

     template_values = { 
      'pages': pages, 
     } 

     path = os.path.join(os.path.dirname(__file__), 'template/list.html') 
     self.response.out.write(template.render(path, template_values)) 

Urls.py :

(r'/browse/(\d+)/', One), 

오류 : 이미 get 핸들러에 전달되는

 
Traceback (most recent call last): 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/webapp/__init__.py", line 501, in __call__ 
    handler.get(*groups) 
    File "/Volumes/foobar/views.py", line 72, in get 
    id = models.Page.get_by_id(int(str(self.request.get("id")))) 
ValueError: invalid literal for int() with base 10: '' 

답변

1

같은 URL에 대한 작동합니다. 첫 번째 줄 :

id   = models.Page.get_by_id(int(str(self.request.get("id")))) 

은 쿼리 문자열에서 ID를 가져온 페이지 개체를 반환합니다. 이 페이지 개체를 반환하고 경우 -이 쿼리를 반환하지 않습니다

page_query = models.Page.get(db.Key.from_path('Page', id)) 

:

id   = models.Page.get_by_id(int(id)) 

Odder의 두 번째 라인 : 그것은, 인수 전달 작업으로 변경 만들려면 'id'를 'int (id)'로 바꾸는 것은 첫 번째 줄과 정확히 똑같습니다. 여기서 무엇을 이루려고합니까?

+0

페이지에 단일 항목을 다시 가져 오려고합니다. 예. 로컬 호스트 : 8080/검색/1/- 표시 할 항목 1 로컬 호스트 : 8080/검색/2/- 항목 2 등 등 list.html에 포함 된 표시 할 것 : {페이지 %에서 페이지 %} 을 {{page.title}} {% endfor %} – gpjones

2

변경 self.request.get("id") 단순히 id.

코드는, 당신이 그것을 가지고, 단지 당신이 여기에 달성하기 위해 노력하고 무엇을 아주 확실하지 않다 /browse/1/?id=1

+0

도움을 주셔서 감사합니다. 오류가 발생했습니다. BadArgumentError : 인수 2에 정수 ID 또는 문자열 이름이 필요합니다. 받은 (한 페이지). – gpjones

0

내 코드에서 비슷한 오류가 발생했습니다. 방금 십진수로 변환하고 나중에 int로 변환하는 단순한 해킹을 수행했습니다. int(Decimal(str(self.request.get("id"))))

0

오류 (알고있는 것이 확실하거나 프로그래밍에 익숙하지 않은 것 같습니다.) 의미 당신은 10을 기준으로해야하는 무언가 (즉, 0-9 숫자)에 대해 유효하지 않은 리터럴 (유효하지 않은 문자)을 타이핑하거나 읽는 중입니다.

관련 문제