2013-01-04 42 views
7

我是Python的新手,並且一般編程,所以解釋的任何東西都應該用Layman術語。在線運行python腳本(django)

我創建了一個讀取CSV文件並輸出結果的簡單腳本。我想上傳該腳本並將其作爲簡單的Web界面或Web應用程序在線運行。

我已經使用Django框架註冊到pythonanywhere.com。我在正確的軌道上嗎?

謝謝。

+1

你的問題有點太含糊。目前還不清楚一個理想的答案是什麼。您可能想要查看Django,但pythonanywhere可能不是運行Web服務器的正確位置。 – jterrace

+0

這可能有所幫助:https://scraperwiki.com/ –

+2

如果你使用pythonanywhere,我會說你是。你應該添加該標籤,來自該網站的某個人會來,並給你更多的建議和提示。 – Droogans

回答

4

作爲PythonAnywhere開發我會說你已經開始在正確的地方。我們確實儘可能地簡化工作。

您可以通過使用flask web framework更簡單的應用程序開始。這也是一個快速入門。下面是一個非常簡單的應用程序,它會在訪問時返回一些輸出。該代碼將進入\var\www\your_username_pythonanywhere_com_wsgi.py文件。

import os 
import sys 
from flask import Flask 

app = Flask(__name__) 
app.debug = True 


path = '/home/your_username/' 
if path not in sys.path: 
    sys.path.append(path) 

from my_script import function_that_parses_csv 

@app.route('/') 
def root(): 
    return function_that_parses_csv() 

這是最簡單的單一文件的方式來提供一些數據作爲Web服務。我想說,首先讓這個工作,然後你可以開始擴大你的知識和增加功能。

+0

所以你也回答了早餐的問題,呵呵?:) – hwjp

+2

當然,如果不是那些討厭的孩子,我也會放棄它。 – aychedee

8

我可能會有偏見,但我會說確定,你在正確的軌道上!

這聽起來像你希望人們能夠上傳一個CSV,然後你的網絡應用程序將處理它並輸出結果?如果是這樣,請查看Django文檔:

https://docs.djangoproject.com/en/1.3/topics/http/file-uploads/

沒有什麼太複雜了,如果你創建了一個FileField Django表單對象按例子。

from django import forms 

class UploadFileForm(forms.Form): 
    file = forms.FileField() 

然後你把它放到你的網頁或模板,包括正確enctype

<form enctype="multipart/form-data" method="post" action="/foo/"> 
{{form.as_p}} 
</form> 

最後,對付它在你的觀點,即處理後(從形式的網址動作):

def handle_csv_upload(request): 
    form = UploadFileForm(request.POST, request.FILES) 
    if form.is_valid(): 
     results = do_my_csv_magic(request.FILES['file']) 
     # now eg save the results to the database, and show them to the user 
     db_entry = MyCSVResults(results=results) 
     db_entry.save() 
     # it's good practice to use a redirect after any POST request: 
     return HttpResponseRedirect('/show_results/%d/' % db_entry.id) 

除此之外,在PythonAnywhere上不需要特別的特殊配置。該文件被保存(臨時)到/ tmp,這將正常工作。如果您想稍後保存該文件,則必須添加一些代碼才能執行此操作。

希望有所幫助。如果您還有其他問題,我們就在這裏!