-3

Django を使用してファイルをアップロードするにはどうすればよいですか?

これらの指示に従ってファイルをアップロードしました

ここではエラーは発生していませんが、フォームを送信すると、フォームの他の詳細がデータベースに保存されました。しかし、アップロードしたファイルはどこにも保存されません。

/models.py/

class resmodel(models.Model):
   resume_header = models.CharField(max_length=100)
   upload_resume = models.FileField(upload_to='documents')

/forms.py/

class resmodelForm(ModelForm):
class Meta:
    model = resmodel

/views.py/

def resview(request):
if request.method == "POST":
    form = resmodelForm(request.POST, request.FILES)
    if form.is_valid():
        a = resmodel(resume_header=resume_header, upload_resume = request.FILES['upload_resume'])
        a.save()
        return render_to_response('/profile/save/success/')
else:
    form = resmodelForm()
    return render_to_response('resume.html', {'form': form})
return render_to_response('resume.html')

/resume.html/

<form action="." method="post" >{% csrf_token %}
<table border="0" align="center" cellsapcing="1" cellspadding="1">
<tr>
    <td colspan="2"><h3> Personal Information</h3></td>
</tr>
<tr>
    <td>Resume Header<sub>(250 words max)</sub></td>
    <td><input type="text" name="resume_header"></td>
</tr>

<tr>
    <td>Upload Resume<sub>(.doc/.docx, rtf, pdf, txt)</sub></td>
    <td><input type="file" name="upload_resume" ></td>
</tr>
<tr>
    <td>
        <input type="submit" value="SUBMIT">&nbsp;&nbsp;
        <input type="reset" value="RESET">
    </td>
</tr>
</table>
</form>

/urls.py/

urlpatterns = patterns('', (r'^profile/$', resview),)

/settings.py/ 設定で、私のメディア パスと URL は..

CURRENT_DIR = os.path.dirname(os.path.abspath(__file__))
MEDIA_ROOT = os.path.join(CURRENT_DIR, 'media')
MEDIA_URL = '/var/www/uploadresume/resume/media/'

これは私のコードです。間違いがある場合は修正しますか?

4

1 に答える 1

1

form.save()手動で保存するよりも使用する必要があります

def resview(request):
    if request.method == "POST":
        form = resmodelForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return render_to_response('/profile/save/success/')
    else:
        form = resmodelForm()
    return render_to_response('resume.html')

入れ忘れenctype="multipart/form-data"<form>

<form action="." method="post" enctype="multipart/form-data">
    {% csrf_token %}
    ..........
</form>
于 2013-04-06T05:15:06.633 に答える