2014-10-27 86 views
0

對於編程我很陌生,如果我對解釋自己的工作做得不好,我會提前道歉。使用Jinja2和Webapp2呈現模板

我正在使用Python,Webapp2,Jinja2和jquery創建一個GAE應用程序。我可以通過HTML表單傳遞字符串查詢來更新HTML頁面,將查詢添加到Python字典中,並使用Jinja2和Webapp2來渲染它們並將其寫出。

但是,當我嘗試使用jquery Ajax post方法發出POST請求而不是使用HTML表單時,我的HTML頁面未更新。我絕對是從我的Python程序調用渲染函數,但它什麼都不做。

任何人都可以提供給我的幫助或建議將不勝感激。提前致謝。

這是我的Python代碼,它繼承了一個處理所有Webapp2請求的基類。這通常運作良好。

class EditJobPage(AppHandler): 
global objectDict 
objectDict ={} 

def get(self): 
    jobs = Job.querynewjobs() 
    TemplateDict = {} 
    TemplateDict = { 
     'jobs': jobs, 
    } 
    self.render('editjob.html', **TemplateDict) 

def post(self): 
    MyKey = self.request.get('job_key') 
    TemplateDict = {} 
    try: 
     job = GetFromSafeKey(MyKey) 
     objectDict['job'] = job 
     TemplateDict = { 
      'job': job, 
     } 
     if self.request.get('what') == 'rename': 
      TemplateDict['jobdescription'] = self.request.get('rename_description') 
      self.rename(**TemplateDict) 
     elif self.request.get('what') == 'delete': 
      self.delete(**TemplateDict) 
     elif self.request.get('what') == 'renumber': 
      TemplateDict['jobnumber'] = int(self.request.get('renumber_description')) 
      self.renumber(**TemplateDict) 
    except: 
     TemplateDict['error'] = 'No job selected' 
    self.render('editjob.html', **TemplateDict) 
    logging.info('here') 

這是基類。同樣,當我使用HTML表單按鈕調用時,這一切都很好。

$("#deletejobbutton").click(function(event) { 
var JobKey = $('#mykey').val(); 
var querystring = 'what=delete' 
$.ajax({ 
url: '/templates/editjob', 
data: { 
    "what": 'delete', 
    "job_key": JobKey, 
}, 
dataType: 'json', 
type: "POST", 
success: function(response) { 
}, 
error: function(xhr) { 
} 
}); 
}); 

當我運行這個時,HTML頁面沒有任何反應。然而,GAE日誌顯示「在這裏」,所以我知道它是通過Python代碼實現的。如果我使用帶有字符串查詢的HTML表單嘗試相同的操作,則會更新頁面。以下是GAE日誌:

INFO  2014-10-27 11:39:53,404 module.py:659] default: "POST /templates/editjob HTTP/1.1" 200 2228 
INFO  2014-10-27 19:40:03,249 MyClasses.py:120] here 

INFO  2014-10-27 11:40:03,250 module.py:659] default: "POST /templates/editjob HTTP/1.1" 200 2228 

再次感謝您的幫助。我希望這不是太混亂。我幾個星期前從零開始,所以我仍然試圖圍繞所有這些包圍我的頭。

+0

我建議你下載Fiddler並確切地查看正在生成的請求和響應。它會爲您節省很多調試麻煩! :-)另外,使用瀏覽器的開發工具控制檯來查找任何錯誤(例如,Chrome中的Ctrl + Shift + j)。 – Cameron 2014-10-27 20:09:43

+0

感謝您的建議,卡梅隆。我會馬上嘗試。 – 2014-10-27 21:50:43

回答

0

如何,我不確定。然而,它現在工作得很好。畢竟,我認爲jQuery代碼實際上並沒有把它放到$ .ajax函數中,儘管我不確定它是如何使它成爲我的Python腳本的。我認爲這就是把我拋棄的原因。我從來沒有使用過jQuery,直到今天,所以我想我只是想比我能夠更快地學習這些東西。