4

私はこのプロジェクトを何時間もハッキングしてきましたが、単純なファイルアップロードアプリを作成する方法がわかりません. 私はすべてのチュートリアルを見てきましたが、私の状況にはまったく当てはまらず、コードを正しく理解できません。この時点で持っているコードが実行されないことはわかっていますが、誰かが私が持っているもので正しい方向に私を押し進めることができることを望んでいました. 私はそれが素晴らしいものではないことを知っていますが、私はイライラしています.誰かが私の見解で特に助けてくれることを願っています。前もって感謝します!

モデル.py

from django.db import models
from django.contrib.auth.models import User
from django.forms import ModelForm


class WorkSheet(models.Model):
    worksheet_name = models.CharField(max_length= 150, default = True)
    creator = models.ForeignKey(User, default = True)
    worksheet_file = models.FileField(upload_to = 'worksheets', default = True)
    number_of_stars = models.PositiveIntegerField(default = True)
    category = models.CharField(max_length = 100, default = 0)


class UploadWorkSheetForm(ModelForm):
    class Meta:
        model = WorkSheet

Views.py

from django.shortcuts import render, render_to_response, HttpResponseRedirect
from django.conf import settings
from django import http


from models import WorkSheet
from forms import UploadWorkSheetForm

def upload(request):
    template = 'upload.html'
    if request.method == 'POST':
        if 'file' in request.FILES:
            file = request.FILES['file']
            filename = file['filename']
            fd = open('%s/%s' % (settings.MEDIA_ROOT, filename), 'wb')
            fd.write(file['content'])
            fd.close()

            return http.HttpResponseRedirect('upload_success.html')
    else:
        form = UploadWorkSheetForm()
        return render_to_response(template, {'form': form})

    return render(request, 'upload.html', {'form': form})

Upload.html

<!DOCTYPE html>
<html>
<head>
    <title>WSD Upload</title>
</head>
<body>
<h1>Upload WorkSheet</h1>
{% block body %}
<form action="." method="post" enctype="multipart/form-data"> {{ form }}
    <type="submit" value = "Upload"/>
</form>
{% endblock %}
</body>
</html>

他に必要なものがあれば教えてください。ありがとう、ありがとう、ありがとう!

4

1 に答える 1

6

ビュー.py

def upload(request):
    template = 'upload.html'
    if request.method == 'POST':
        form = UploadWorkSheetForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()

            return HttpResponseRedirect('upload_success.html') <---change this to your valid url not template name
    else:
        form = UploadWorkSheetForm()

    return render(request, 'upload.html', {'form': form})

テンプレート

...................        
{% block body %}
<form action="." method="post" enctype="multipart/form-data"> 
    {% csrf_token %}    
    {{ form.as_p }}
    <input type="submit" value = "Upload"/>
</form>
{% endblock %}
....................
于 2013-04-06T02:38:55.807 に答える