2016-01-23 152 views
1

我有這樣的代碼,如何在python文件中返回圖片? Django的

import json 
from goose import Goose 

def extract(url): 
    g = Goose() 
    article = g.extract(url=url) 
    if article.top_image is None: 
     return "none" 
    else: 
     if article.top_image.src is None: 
      return "none" 
     else: 
      resposne = {'image':article.top_image.src} 
      return article.top_image.src 

在這裏,而不是「無」我要回的圖像文件。爲了上傳圖像文件,我需要保存圖像在我的靜態文件,並返回作爲圖像?我一直在做靜態文件返回圖像與HTML整個時間,但我不知道如何用python ,還是有其他方法?

+0

不知道爲什麼你會想這樣做。你有一個圖片網址;您應該簡單地將該圖像包含在您的網址中,以便瀏覽器可以直接從該地址下載該圖像。 –

+0

@DanielRoseman是的,但對於一些網站,圖片網址無效。由於某種原因,當我輸入的YouTube的YouTube它不會工作(顯示破碎的圖像)....不知道爲什麼所以我想要把默認圖像,如果它不會工作 –

+0

@DanielRoseman,併爲一些url圖像只是空白,我不明白爲什麼,,,,你知道爲什麼嗎? –

回答

2

你有在article.top_image.src圖像資源的URL,所以它應該只是一個下載圖像並返回它的問題。您可以使用requests模塊的下載部分:

import requests 

def extract(url): 
    article = Goose().extract(url) 
    if article.top_image is None or article.top_image.src is None 
     return "none" 

    r = requests.get(article.top_image.src) 
    return r.content 

這將從函數返回實際的圖像數據。

可能要返回圖像作爲HTTP響應,在這種情況下,您可以從您的視圖函數返回此:

return HttpResponse(extract(url), content_type="image/jpeg") 
+0

這段代碼與我寫的代碼基本相同,只是比較簡單。我問的是我如何插入圖片而不是「無」 –

+0

基本上相同...除了它實際上檢索圖像數據並從您的問題中請求的函數返回它。我不明白'insert'是什麼意思。插入什麼?到從Django模板呈現的HTML中?您是否希望將實際的圖像數據嵌入到HTML中,或者只需添加引用圖像文件的''標籤? – mhawke

+0

對不起,我不清楚。我做了一個更詳細的新職位。 http://stackoverflow.com/questions/34972110/how-to-return-image-in-python-file?noredirect=1#comment57675354_34972110我希望在那裏返回靜態圖像,所以我可以在html中使用post.image。我可以看到我在這裏並不清楚,完全是我的錯。如果你能看到我所做的新帖子,那就提供了更多細節 –