Django 1.10上传文件。表格无效

时间:2018-01-31 14:20:39

标签: python django forms

我尝试从Django中的Form上传文件 我使用Django 1.10。

我的表格

<form   id='form_'  enctype="multipart/form-data">
  {% csrf_token %}
  <input id="fileupload"  data-url="{% url 'analyzer:upload_files' %}"
   data-form-data='{"csrfmiddlewaretoken": "{{ csrf_token }}"}'
  type="file" name="file" multiple>
  <p>Drag your file(s) here or click in this area.</p>
</form>

我的观点

def upload_files(request):

    print(request.FILES, request.user.username)
    if request.POST:
        print('ok')
        form = UploadFileForm(request.POST, request.FILES)

        if  form.is_valid():
            print('YEEEES')

            return JsonResponse({'data':'ok', 'is_valid': True})
        else:
            return JsonResponse({'data':'Bad', 'is_valid': False})

my forms.py

from django import forms
from .models import File

class UploadFileForm(forms.ModelForm):

    class Meta:

        model = File
        fields = ('file_upload','user',)

我的模特

from django.db import models

def user_directory_path(instance, filename):
    # file will be uploaded to MEDIA_ROOT/user_<id>/<filename>
    return ('user_%s/%s' %(instance.user.id, filename))

class File(models.Model):

    id = models.IntegerField(primary_key=True)
    id_user = models.IntegerField()
    user = models.TextField()
    uploaded_at = models.DateTimeField(auto_now_add=True)
    file_upload = models.FileField(upload_to='files/')
    file_size = models.IntegerField()
    file_name = models.TextField()

我不知道我做错了什么。我的表格无效。 请帮我! 附: 不过,我正在尝试单独为每个用户保存文件,但是来自Internet的示例无法帮助

1 个答案:

答案 0 :(得分:1)

您应该至少显示form.errors的内容,以便我们和用户知道导致该内容的原因,而不仅仅是显示该表单无效。

但是,从您的代码中可以清楚地看到表单需要user字段的值,但您的HTML不提供该字段。