2015-08-28 118 views
0

我只是一個初學者在python/json。我有一個html文檔,基本上允許人們輸入(1)類名和(1)prereq。在我的post方法中,我試圖創建一個新的字典,添加(鍵)類名和(值)prereq。但是我得到這個追溯錯誤:Google App Engine JSON屬性錯誤

Traceback (most recent call last): 
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2- .5.2\webapp2.py", line 1535, in __call__ 
rv = self.handle_exception(request, response, e) 
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2- 2.5.2\webapp2.py", line 1529, in __call__ 
rv = self.router.dispatch(request, response) 
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1278, in default_dispatcher 
return route.handler_adapter(request, response) 
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1102, in __call__ 
return handler.dispatch() 
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 572, in dispatch 
return self.handle_exception(e, self.app.debug) 
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 570, in dispatch 
return method(*args, **kwargs) 
File "C:\Users\Desktop\classes\main.py", line 27, in post 
self.response.write(template.render(extracted_output)) 
File "C:\Program Files (x86)\Google\google_appengine\lib\jinja2-2.6\jinja2\environment.py", line 889, in render 
vars = dict(*args, **kwargs) 
ValueError: dictionary update sequence element #0 has length 1; 2 is required 

另一個問題是,當我創建一個新的Class_Name對象,是class_title自動將JsonProperty

class Class_Name(ndb.Model): 
    class_title = ndb.JsonProperty() 

def post(self): 
    classname = self.request.get('classname') 
    prereq = self.request.get('prereq') 
    new_dictionary = {} 
    new_dictionary [classname] = prereq 
    new_class = Class_Name(class_title = new_dictionary) 
    new_class.put() 
    dictionary_extracted = new_class.class_title 
    extracted_output = json.dumps(dictionary_extracted) 
    template = jinja2_environment.get_template('template/post.html') 
    self.response.write(template.render(extracted_output)) 
+0

'template.render'需要一個字典或kwargs來定義模板變量,但是你已經傳遞了一個'json'字符串。 模板期望什麼變量名稱? –

+0

爲我的'模板/ post.html',我所做的就是打印字典這樣{{extracted_output}} – amay20

回答

1

在您的代碼段:

extracted_output = json.dumps(dictionary_extracted) 
template = jinja2_environment.get_template('template/post.html') 
self.response.write(template.render(extracted_output)) 

json.dumps返回一個字符串 - 然後你傳遞只是template.render ...永遠無法工作!

如果,你在評論說,(你應該修改你的問題,以使其更清晰!),你的模板包含爲{{extracted_output}},那麼這個變量必須傳遞給render,即最後一條語句必須變成

self.response.write(template.render(extracted_output=extracted_output)) 
+0

謝謝我讓我的程序工作! – amay20