對於編程我很陌生,如果我對解釋自己的工作做得不好,我會提前道歉。使用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
再次感謝您的幫助。我希望這不是太混亂。我幾個星期前從零開始,所以我仍然試圖圍繞所有這些包圍我的頭。
我建議你下載Fiddler並確切地查看正在生成的請求和響應。它會爲您節省很多調試麻煩! :-)另外,使用瀏覽器的開發工具控制檯來查找任何錯誤(例如,Chrome中的Ctrl + Shift + j)。 – Cameron 2014-10-27 20:09:43
感謝您的建議,卡梅隆。我會馬上嘗試。 – 2014-10-27 21:50:43