2011-04-15 100 views
0

是否有可能在Django中使用可執行文件。例如,我有一個Django表單需要輸入一個文件。我想將該文件作爲參數傳遞給腳本/可執行文件/程序,並使用django輸出結果。這個想法有什麼好的起點?非常感謝可執行文件和Django

+0

「可執行文件」是什麼意思?二進制?腳本?你到底什麼意思?此外,你將如何防止這代表無盡的安全問題? – 2011-04-15 19:59:27

+0

可執行文件我的意思是像下面這個例子那樣的應用程序:我把一個圖像/文件作爲輸入,將圖像/文件作爲參數傳遞給應用程序並修改圖像。 – Bigdinrock 2011-04-15 20:12:13

+0

所以「使用Django的可執行文件」意味着一些Python腳本或代碼能夠完成一些工作?任何Python腳本或代碼都可以與Django一部分的Python一起使用。究竟是什麼**使您對編寫Python代碼感到困惑? – 2011-04-15 20:33:21

回答

1

的問題,你應該,你會問是否有可能在python。基本上所有你需要做的就是將輸入內容輸入到一個python腳本中,你可以從你的django視圖中調用,或者不是。一旦運行執行subprocess命令與您的可執行文件,並採取結果。 :)

Goodluck。

+0

「是否有可能在Python中」。誠然,問題是關於Python的語言,而不是Django的框架。然而,這是一個*無用的問題。 Python中的任何可能 - 問題是有多少工作,多少風險以及多少安全漏洞。 – 2011-04-15 20:03:04

0

是的,你可以做到這一點。在Python中有幾種不同的方式。如果你想讀取輸出並使用它,那麼你可能想popen,發現在http://docs.python.org/library/os.html#os.popen

警告,這可能是非常危險的。如果添加到命令行的數據是惡意的(甚至是偶然的),那麼你可能會在服務器上造成不好的事情。您正在有效地向提交表單的人員提供在Web服務器具有相同權限的情況下在服務器上運行命令的功能。

import os 
ls_fd = os.popen('ls -l /tmp') 
output = ls_fd.read() 
ls_fd.close() 

這樣做你的ls_fd是一個類似於對象的文件。你讀。()它就像一個文件。你只能做一次,然後你就在文件的最後。同樣,你應該在完成後關閉()它。

強烈考慮將用戶輸入添加到命令行。你可以創建一個可能的選項列表,然後給用戶一個他們想要的選擇。然後,您可以不使用用戶的輸入並將其添加到命令行的末尾,而可以使用其中一個預配置的命令行並執行該命令。

+0

我不想在命令行中使用輸入。我想將它作爲參數傳遞給應用程序。 – Bigdinrock 2011-04-15 20:09:55

+0

如果將它作爲一個段添加,那麼它仍然是命令行的一部分,應該小心處理。例如:cmd ='ls -l%s'%arg – newz2000 2011-04-16 21:49:40

1

你想要這樣的東西嗎?

>>> import commands 
>>> commands.getstatusoutput('pwd') 
(0, '/home/efazati') 
+0

是的,像這樣但沒有像pwd這樣的標準unix命令,但是使用像./myscript這樣的自定義腳本 – Bigdinrock 2011-04-15 20:15:35

+0

@Bigdinrock它的終端...您可以使用所有的東西 – Efazati 2011-04-15 21:15:42