簡體   English   中英

Django文件上傳未保存到文件系統

[英]Django File Upload Not Saving To Filesystem

當我上傳文件時,我得到一個“ POST / submit / HTTP / 1.1” 200604。當我檢查一下是否上傳了文件時,找不到它。

設置文件包括:

 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 MEDIA_URL = '/media/'
 MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

楷模:

 from django.db import models 

 class Document(models.Model):
    description = models.CharField(max_length=255, blank=True)
    document = models.FileField(upload_to='documents/')
    uploaded_at = models.DateTimeField(auto_now_add=True)

形式:

from django import forms
from mysite.uploads.models import Document

class DocumentForm(forms.ModelForm):
    class Meta:
        model = Document
        fields = ['description', 'document']

觀看次數:

 from django.shortcuts import render
 from django.http import HttpResponseRedirect
 from django.core.urlresolvers import reverse

 from mysite.uploads.models import Document
 from mysite.uploads.forms import DocumentForm

def model_upload(request):
    if request.method == 'POST':
        form = DocumentForm(request.POST, request.FILES)
        if form.is_valid():
            form.save(commit=True)
            return HttpResponseRedirect(reverse('uploadindex'))
   else:
       form = DocumentForm()
   return render(request, 'uploads/index.html', {
    'form': form
})

網址:

from django.conf.urls import url

from mysite.uploads  import views

urlpatterns = [
    url(r'^$', views.model_upload, name='uploadindex'),
]

模板:我使用的是multipart / form-data,不確定文件為什么不會上傳。

 <html>
    <body>
    <form action="{% url "uploadindex" %}" 
       method="post"encytpe="multipart/form-data">
       {% csrf_token %}
       {{ form.as_p }}
       <button type="submit">Upload</button>
    </form>
    </body>
 </html>

我的猜測是您的DocumentForm無效,並且您在document字段中遇到錯誤,但未在模板中呈現任何反饋來表明這一點。

檢查您是否在表單標簽上設置了適當的編碼。 這是通過Django表單處理文件上傳的最常見問題:

請注意,只有在請求方法為POST並且發布請求的屬性為enctype =“ multipart / form-data”時,request.FILES才會包含數據。

https://docs.djangoproject.com/zh-CN/1.11/topics/http/file-uploads/#basic-file-uploads

...
if form.is_valid():
        form.save(commit=True)
        return HttpResponseRedirect(reverse('uploadindex'))
else:
    print form.errors
...

萬一您的document字段有任何錯誤,它將顯示錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM