2012-09-14 50 views
0

更新0: 有一個微妙的,但嚴重,在我的代碼,並在下面,因爲我不僅可以在模板上與hiddenname比較name我的解釋錯誤(這只是告訴我,用戶已經做了一個像複選框更改會告訴我的變化,但故意沒有複選框),我還需要比較namename的狀態在保留的數據存儲區中以查看如果其他人已經預留了時間段。所以我不能使用JavaScript,我必須重寫下面的一些代碼才能做出正確的比較。這個問題的標題可能會保留原始問題。 (在我錯誤地說了JavaScript會工作的意見之一。) 更新0:一個Python編碼的「警報」般的對話框或模板

我想這個代碼提示,我用Trans模型寫一個排序的方式「警告」和gae數據存儲(在下面)在我的主應用程序和「警報模板」之間進行通信。我有幾個問題。

最初,我需要在else:子句的另一部分代碼中使用此警報,而不是在elif:子句中。當我嘗試在elif代碼中使用更簡單的警報版本時,python似乎忽略了self.response.out.write(template.render(path, template_values)),然後繼續執行代碼,結束了我的條件:return webapp2.redirect("/read/%s" % location_id)。所以,正如你在我的代碼中看到的,我已經註釋掉了被忽略的前代碼行,並試圖用更接近後者的代碼行來代替它,但後一行指向unexpected而不是read。你可以從我的代碼中看到它仍然是兩種方法的混合,我可以使用幫助對它們進行排序。 else:elif:對此有什麼不同嗎?

本來我並沒有預料到我希望從我的代碼中的很多地方調用相同的html模板和Trans模型,所以我沒有在使用Trans的設計中設計密鑰或ID或key_name。而現在我無法實現具有這種細節的版本。

我一直在尋找一個如何在Python中創建這種「警報模板」的例子。他們在javascript中非常容易,但我正在嘗試在我的python代碼中進行用戶輸入驗證。任何指向示例或文檔的指針將不勝感激。

weekday_key = db.Key.from_path('Locations',location_id,'Courts', court_id,'Days',weekday) 
if name == hiddenname: 
    pass 
elif name != hiddenname and hiddenname == "": 
    reservation = Reservations.get_or_insert(time[2],parent=weekday_key) 
    reservation.hour = time[0] 
    reservation.minute = time[1] 
    reservation.year = int(year) 
    reservation.nowmonth = int(nowmonth) 
    reservation.day = int(day) 
    reservation.nowweekday = int(nowweekday) 
    reservation.name = name 
    reservation.put() 
elif name != hiddenname and name!="": 
    reservation = Reservations.get_by_key_name(time[2],parent=weekday_key) 
    reservation.hour = time[0] 
    reservation.minute = time[1] 
    reservation.year = int(year) 
    reservation.nowmonth = int(nowmonth) 
    reservation.day = int(day) 
    reservation.nowweekday = int(nowweekday) 
    reservation.name = name 
    reservation.put() 
    reason='This was in that time slot already: ' 
    trans = Trans(parent=reservation.key().name()) #this line is iffy 
    trans.reason=reason 
    trans.name=hiddenname 
    trans.put() 
    iden = trans.key().id() # this is part of the iffy just above 
    template_values = {'trans':trans} 
    path = os.path.join(TEMPLATE_DIR, 'unexpected.html') 
    #self.response.out.write(template.render(path, template_values)) 
    return webapp2.redirect("/unexpected/%s/%d" % (time[2],iden) #more iffy 
else: 
    pass 

我對跨中下一個模型。

class Trans(db.Model): 
    reason = db.StringProperty() 
    name = db.StringProperty() 

我的Jinja2配備unexpected.html模板如下。

{% extends "base.html" %} 
{% block content %} 
This unexpected result occurred. {{ trans.reason }}:<emph style="font-weight: bold">{{ trans.name }}</emph> 
<br /><br /> 
<div id="inputdata"> 
<label>Click the "Ok" button to go back to the previous page so you can elect to edit your entry, or not. 
</label> 
<button onclick="window.history.back()">Ok</button> 
</div> 

{% endblock content %} 
+5

請不要使用'''',而是使用'!='來代替[文檔](http://docs.python.org/reference/expressions.html#not-in):*「The < >拼寫被認爲是過時的。「* <>'運算符已從Python 3中完全刪除。 –

+0

爲什麼不使用正常的javascript警報? –

+0

正如我在問題中所說的,「我試圖在我的python代碼中進行用戶輸入驗證。」與使用JavaScript警報不一致嗎? – zerowords

回答