7

私はPythonとプログラミング全般に不慣れなので、説明するものはすべて素人の用語である必要があります。

CSV ファイルを読み取り、結果を出力する簡単なスクリプトを作成しました。そのスクリプトをアップロードして、単純な Web インターフェイスまたは Web アプリとしてオンラインで実行したいと考えています。

Django フレームワークを使用して pythonanywhere.com にサインアップしました。私はここで正しい軌道に乗っていますか?

ありがとう。

4

2 に答える 2

8

私は偏見を持っているかもしれませんが、あなたは正しい道を進んでいると確信しています!

人々が csv をアップロードできるようにしたいのですが、Web アプリはそれを処理して結果を出力しますか? もしそうなら、Django のドキュメントをチェックしてください:

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

例のように を使用して Django Form オブジェクトを作成すれば、それほど複雑なことはありませんFileField

from django import forms

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

次に、正しい を含めて、それを Web ページまたはテンプレートに配置しますenctype

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

最後に、投稿を処理するビューでそれを処理します (フォーム アクションからの URL を使用)。

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 に保存され、正常に動作します。後でファイルを保存する場合は、そのためのコードを追加する必要があります。

それが役立つことを願っています。ご不明な点がございましたら、お気軽にお問い合わせください。

于 2013-01-04T08:55:26.300 に答える
4

PythonAnywhereの開発者として、あなたは適切な場所から始めたと言えます。私たちは物事をできるだけシンプルにするようにしています。

フラスコ Web フレームワークを使用して、より単純なアプリケーションから始めることができます。そのためのクイックスタートもあります。以下は、アクセスしたときに何らかの出力を返す非常に単純なフラスコ アプリです。このコードは\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 サービスとして提供する最も単純な単一ファイルの方法です。それを機能させることから始めて、知識を広げて機能を追加することができます。

于 2013-01-04T08:53:51.950 に答える