0

私はこのdjangoスニペットを見てきました: http://djangosnippets.org/snippets/1036/#c3564

私のコードは次のとおりです。

    def handle_uploads(request, key):
        saved=[]

        upload_dir = settings.UPLOAD_PATH % request.user.username
        upload_full_path =os.path.join(settings.MEDIA_ROOT, upload_dir)

        if not os.path.exists(upload_full_path):
            os.makedirs(upload_full_path)

        for key in keys:
            if key in request.FILES:
                upload = request.FILES[key]
                while os.path.exists(os.path.join(upload_full_path, upload.name)):
                    if (request.user.username not in upload.name) and (request.user.first_name not in upload.name):
                        upload.name = request.user.username + "_" + upload.name
                dest = open(os.path.join(upload_full_path, upload.name), 'wb')
                for chunk in upload.chunks():
                    dest.write(chunk)
                dest.close()
                saved.append((key, os.path.join(upload_dir, upload.name)) )
        return saved

    def upload_view(request):
        user = request.user
        if user.is_authenticated():
            if request.method == 'POST':
                form =upload_form(request.POST, request.FILES)
                if form.is_valid():
                    saved_file = handle_uploads(request, ?)

与えられた例では、彼らは画像をアップロードしているようです。ms word 文書をアップロードしたい場合、ここに何を入力すればよいですか? また、この例では、MyModel() というモデルを参照しています。このモデルは、msword ドキュメントではどのように見えるでしょうか。私が自分のサイトを機能させたいのは、各ユーザーがアップロードしたドキュメントを表示できるようにすることです。その後、必要に応じて、これらのドキュメントを再度ダウンロードできます。ドキュメントを各ユーザーに帰属させるには、それを拡張された user_field クラスに追加する必要がありますか? その場合、例で「MyModel」と呼ばれるモデルは、その拡張されたユーザー フィールドにすぎませんか? また、ファイルのダウンロードを設定するにはどうすればよいですか? これに関するドキュメントには何も表示されませんでした。

ありがとうございました。

4

1 に答える 1

1

ファイルのアップロードに関する Django のドキュメント、モデルのFileFieldフィールド タイプ、および Django フォームのFileFieldフィールド タイプを参照してください。

アップロードされたファイルを表すモデルを定義したいと思うでしょう:

#in your models file
from django.contrib.auth.models import User

class UploadedFile(models.Model):
    user = models.ForeignKey(User)
    file = models.FileField(upload_to='myfiles/')
于 2011-06-24T02:19:44.037 に答える