在你的代碼,html
是(的HTML標記)的字符串。當web2py操作返回一個字符串時,該字符串直接返回給瀏覽器。如果您試圖將HTML作爲完整的網頁加載,則不起作用,因爲Bokeh file_html
函數只是簡單地生成帶有JavaScript代碼的<script>
標籤。只有將它嵌入完整的HTML頁面並在頁面中加載Bokeh Javascript和CSS文件時纔有效。有關詳細信息,請參閱相關Bokeh documentation。
要在web2py中使用此工作,您可以使用response.files
包含必要的Bokeh Javascript和CSS文件,並且可以將Bokeh生成的腳本標記嵌入到視圖中。
def plot():
from bokeh.plotting import figure
from bokeh.resources import CDN
from bokeh.embed import file_html
response.files.extend(list_of_Bokeh_JS_and_CSS_static_file_URLs)
plot = figure()
plot.circle([1,2], [3,4])
html = file_html(plot, CDN, "my plot")
return dict(bokeh_script=html)
它是由你來指定散景JS的列表和CSS文件,並確保它們是可用的(你可以將它們複製到您的web2py應用的靜態文件夾,並從那裏爲他們服務,或使用背景虛化CDN如圖所示在他們的文檔中)。
在爲
plot
動作視圖(例如,/views/default/plot.html)
然後:
{{extend 'layout.html'}}
{{=XML(bokeh_script)}}
注意,插入HTML標記的字符串直接進入web2py的視圖時,必須包它在XML()
中阻止web2py轉義HTML。
最後,假設您的系統上安裝了Python和Bokeh,請確保從源代碼運行web2py,而不是使用Windows或OSX二進制文件,因爲後者包含它們自己的Python解釋器,因此無法導入安裝在系統上的庫。
我們需要更多的代碼。你如何調用'plot'函數並嘗試將其輸出插入到頁面中? – Anthony
我打電話給劇情功能,通過簡單的去www。 - ... -/default/plot。自從1以來,我還沒有專門爲plot函數創建過一個頁面。我希望它能以某種方式自己完成2.我不知道如何將圖形嵌入到頁面中。 – user3729625