2009-08-06 13 views
3

Google App Engineを使用して1つのエントリから1ページにデータを取得しようとすると、次のエラーが発生しました。 foob​​ar.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), 

エラー:

 
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)) 

オダーは二行目である:それは、引数で渡されたで動作するようにそれを変更するようにするには'id'を 'int(id)'に置き換えると、最初の行とまったく同じことになります。ここで何を達成しようとしていますか?

+0

私はページに1つのエントリを取り戻そうとしています。 など。 localhost:8080 /閲覧/ 1/- 表示するであろうエントリー1 はlocalhost:8080 /閲覧/ 2/- エントリー2などなど。 するlist.htmlが含ま表示するであろう:{ページ%でページの%} を {{page.title}} {%endfor%} – gpjones

2

変更self.request.get("id")単にidに、すでにgetハンドラに渡されています。

コードは、あなたがそれを持っているように、唯一の私はあなたがここで達成しようとしているものはかなりわからないんだけど/browse/1/?id=1

+0

あなたの助けに感謝します。 BadArgumentError:引数2として整数のIDまたは文字列名が必要です。 (a Page)を受け取りました。 – gpjones

0

私のコードの1つに似たエラーがありました。私はちょうど10進数に変換し、後でそれをintに変換する単純なハックをしましたint(Decimal(str(self.request.get("id"))))

0

エラー(あなたが知っていると確信しています。 10進数(0〜9の数字)を持つべきものに対して、無効な文字(無効な文字)を入力/読んでいることを示します。

関連する問題