2015-01-02 104 views
2

我正在嘗試使用bottle.py,並且遇到了請求靜態模板和渲染它們的一些問題。使用bottle.py,我該如何正確渲染模板的靜態文件請求?

我有一些基本的路線:

@route("/feed") 
def show_feed(): 
    # query database, calculate things, etc. 
    # code to show feed (which is dynamic) 

@route("/submit") 
def show_submit(): 
    # query database, calculate things, etc. 
    # code to show submit 

@route("/<filename:path>") 
def serve_static(filename): 
    # code to simply return static files 

我也有一些模板:

views/submit.html 
views/feed.html 

有與Web服務器本身沒有問題。它按照它的說法工作。問題是,當我用我的模板中的鏈接,像往常一樣,去一頁一頁:

<a href="feed.html">Go back to the feed</a> 

當用戶點擊該鏈接,或手動輸入「.../feed.html」或」。 ../submit.html「,請求的URL爲.../feed.html,而不是/feed,瓶子路由到serve_static(filename)函數。因此,不會呈現模板 - 相反,將返回靜態模板,並帶有諸如「{{article [0]}}」和「%end%end」之類的醜陋內容。

如何獲得Bottle來正確渲染這些模板?

有沒有一種方法讓Bottle知道何時呈現模板時,他們被要求作爲靜態文件?將href屬性更改爲服務器應該預期的內容是否被認爲是一種好的做法?有什麼我不考慮?

+0

爲什麼要將模板放在'static'目錄中,而不是'views'目錄中,如[文檔](http://bottlepy.org/docs/dev/tutorial.html#templates )? – BrenBarn

+0

我沒有看到那個音符。我只是將'static'目錄更改爲'views',但它對問題沒有影響。 – joshreesjones

回答

4

的問題是非常簡單地認爲

<a href="feed.html"> 

有一個錯誤href給您的URL模式。只需將其更改爲

<a href="feed"> 

這也是一個好主意,因爲BrenBarn建議,對模板搬進自己單獨的子目錄,從要真正服務大衆的靜態文件中的一個客場。然而,它本身並不能解決你的問題 - 你只需點擊404鏈接即可。核心問題是修復<a>href

+0

我輸入的這個問題越多,對我來說就越明顯。但是,我不確定鏈接到Web應用程序路線而不是嚴格文件是否是標準做法 - 我從未見過或讀過任何關於此的內容。感謝您指出我應該接受的明顯內容! – joshreesjones

+0

始終鏈接到您想要達到的URL!無論如何,很高興我幫了忙。 –