このコード行:
contract = Contract.get_by_id(contract_id)
このブロックから:
class MainHandler(webapp2.RequestHandler):
def get(self):
contract_id = self.request.get("contract_id")
if contract_id is None:
contract = db.GqlQuery("SELECT * FROM Contract ORDER BY date DESC").get()
if contract == None:
numBook = 1
numInitialPage = 1
numFinalPage = 1
else:
contract = Contract.get_by_id(contract_id)
template_values = {"numBook":numBook,
"numInitialPage":numInitialPage,
"numFinalPage":numFinalPage}
template = jinja_environment.get_template('index.html')
self.response.out.write(template.render(template_values))
このエラーが発生しています:
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2\webapp2.py", line 570, in dispatch
return method(*args, **kwargs)
File "C:\Users\Py\Desktop\contract\main.py", line 277, in get
contract_id = self.request.get("contract_id")
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\ext\db\__init__.py", line 1292, in get_by_id
ids, multiple = datastore.NormalizeAndTypeCheck(ids, (int, long))
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\api\datastore.py", line 139, in NormalizeAndTypeCheck
(types, arg, typename(arg)))
BadArgumentError: Expected an instance or iterable of (<type 'int'>, <type 'long'>); received (a str).
私の目標はcontract_id
、他のハンドラーが MainHandler にリダイレクトするときに変数を介して値が渡された場合、MainHandler がそれを使用する必要があることです。しかし、MainHandler を初めて使用する場合は、contract_id
値を変更する必要がNone
あり、プログラムは別のものにする必要があります。しかし、これは起こっていません。MainHandler が呼び出されると、'contract_id' (からself.request.get("contract_id")
) を文字列値として解釈します。それを修正して私の目標を達成するにはどうすればよいですか?