2015-05-20 83 views
1

讓我們假設你有一個Django項目,它的景色之一的響應是圖像,如果你想將一個HTML文檔中的形象,你這樣做:Python django,可以直接在html模板中呈現視圖的輸出嗎?

<img src="/path_to_my_view/"> 

然後,當用戶打開網頁返回該HTML文檔,他將看到圖像。這一點沒什麼新意。

現在,如果該「視圖」的響應不是圖像而是簡單文本,沒有嵌入簡單文本的HTML標記,那麼會發生什麼情況,那麼您將如何執行該操作?

返回一個簡單的文本視圖代碼是:

from django.http import HttpResponse 

def view(request): 
    return HttpResponse('Simple line of text returned by my view') 

所以,我想在我的HTML做的是這樣的:

<p>The exit of the view was: <?HTML_TAG? src="/path_to_my_view/"></p> 

或者這樣的事情(使用Django模板語言):

<p>The exit of the view was: {{ MyProjectApp.view }}</p> 

但我還沒有找到任何一種替代方案。

目前解決這個問題是通過使用對象HTML標籤:

<object width="400" height="400" data="/path_to_my_view/"></object> 

但是我不滿意這個解決方案,它似乎是用炮殺死一個錯誤,我認爲我錯過了一些東西。

感謝您的支持!

回答

0

我認爲你正在尋找一個,這是嵌入其他內部一個HTML文檔的方式:

<iframe src='/path_to_my_view/'> 

但是因爲這些是在同一臺服務器上兩個觀點,我不知道爲什麼你想通過HTML嵌入它。爲什麼不簡單地從另一個視圖調用視圖並將結果作爲上下文變量傳遞?或者,甚至更好的是,將兩個視圖調用的代碼的結果分解爲一個常用方法。

0

這裏有兩個選擇:要麼你使用TemplateView直接映射到你的url,並在該模板中添加你的html代碼。

另一種解決方案是將字符串解釋爲模板並進行渲染。

0

我找到了解決我的問題:

View.py

def myview(request): 
    content ='Hello I am an innocent string' 
    response = HttpResponse(content, content_type='text/plain') 
    return response 

template.html

<object type="text/plain" data="/myapp/"></object> 

希望它可以幫助別人!

再見!

相關問題