2013-01-04 48 views
7

Tôi mới sử dụng Python và lập trình nói chung, vì vậy mọi thứ được giải thích phải thuộc về các thuật ngữ Layman.Chạy tập lệnh python trực tuyến (django)

Tôi đã tạo một tập lệnh đơn giản đọc các tệp CSV và xuất kết quả. Tôi muốn tải lên tập lệnh đó và chạy tập lệnh trực tuyến dưới dạng giao diện web hoặc ứng dụng web đơn giản.

Tôi đã đăng ký pythonanywhere.com bằng cách sử dụng khung công tác Django. Tôi có đi đúng hướng ở đây không?

Cảm ơn.

+1

Câu hỏi của bạn hơi quá mơ hồ. Không rõ câu trả lời mong muốn là gì. Bạn có thể muốn kiểm tra Django, nhưng pythonanywhere có lẽ không phải là nơi thích hợp để chạy máy chủ web. – jterrace

+0

điều này có thể giúp: https://scraperwiki.com/ –

+2

Nếu bạn đang sử dụng pythonanywhere, tôi muốn nói rằng bạn đang có. Bạn nên thêm thẻ đó, ai đó từ trang web sẽ đến và cung cấp thêm lời khuyên và mẹo cho bạn. – Droogans

Trả lời

4

Là một PythonAnywhere Tôi có thể nói rằng bạn đã bắt đầu ở đúng nơi. Chúng tôi cố gắng và làm mọi việc đơn giản nhất có thể.

Bạn có thể bắt đầu bằng ứng dụng đơn giản hơn bằng cách sử dụng flask web framework. Có một khởi đầu cho điều đó là tốt. Dưới đây là một ứng dụng bình rất đơn giản mà sẽ trả lại một số đầu ra khi truy cập. Mã này sẽ đi vào tệp \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() 

Đây là cách đơn giản nhất, cách phân phát một chút dữ liệu dưới dạng dịch vụ web. Tôi sẽ nói bắt đầu bằng cách làm điều đó để làm việc và sau đó bạn có thể bắt đầu mở rộng kiến ​​thức của bạn và thêm các tính năng.

+0

Vì vậy, bạn đang trả lời các câu hỏi SO quá sáng, huh?:) – hwjp

+2

Chắc chắn rồi, và tôi cũng sẽ tránh xa nó nếu nó không dành cho những đứa trẻ pesky. – aychedee

8

Tôi có thể bị thiên vị nhưng tôi chắc chắn rằng bạn đang đi đúng hướng!

Có vẻ như bạn muốn mọi người có thể tải lên csv, khi đó ứng dụng web của bạn sẽ xử lý và xuất kết quả? Nếu vậy, hãy kiểm tra các tài liệu Django:

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

Không có gì quá phức tạp, nếu bạn tạo một đối tượng Django Form với một FileField theo ví dụ.

from django import forms 

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

Sau đó, bạn đặt nó vào trang web của bạn hoặc mẫu, bao gồm đúng enctype:

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

Cuối cùng, bạn đối phó với nó theo quan điểm của bạn để xử lý các bài (với url từ mẫu hành động):

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) 

Bên cạnh đó, không cần cấu hình đặc biệt cụ thể trên PythonAnywhere. Các tập tin được lưu (tạm thời) đến/tmp, mà sẽ làm việc tốt. Nếu bạn muốn lưu tập tin cho sau này, bạn sẽ phải thêm một số mã để làm điều đó.

Hy vọng điều đó sẽ hữu ích. Chúng tôi ở đây nếu bạn có thêm bất kỳ câu hỏi nào!

Các vấn đề liên quan