Django表格:“;此字段为必填字段”;当文件以enctype发布到文件字段时

Django表格:“;此字段为必填字段”;当文件以enctype发布到文件字段时,django,forms,django-forms,django-templates,Django,Forms,Django Forms,Django Templates,我未能上传文件并获取“此字段为必填字段”。到目前为止,它与报告的问题相同。但是,我am使用了该问题中建议的enctype=“multipart/form data” 模型: class ContentSheet(models.Model): content_sheet_name = models.CharField(max_length=500) content_sheet_file = models.FileField() 表格: class ContentSheetForm

我未能上传文件并获取“此字段为必填字段”。到目前为止,它与报告的问题相同。但是,我am使用了该问题中建议的
enctype=“multipart/form data”

模型:

class ContentSheet(models.Model):
    content_sheet_name = models.CharField(max_length=500)
    content_sheet_file = models.FileField()
表格:

class ContentSheetForm(forms.ModelForm):
    content_sheet_name = forms.CharField(max_length=50)
    content_sheet_name.widget.attrs.update({'autofocus': 'autofocus', 'placeholder': 'Content Sheet Name'})
    content_sheet_file = forms.FileField()

    class Meta:
        model = ContentSheet
        exclude = tuple()
观点:

def add_user_sentence(request):
    statistics_context = get_statistics()
    if request.method == 'POST':
        form = ContentSheetForm(request.POST, request.FILES)
        if form.is_valid():
            # Save the new sentence to the database.
            form.save(commit=True)
             print "form.content_sheet_file", form.content_sheet_file
             ...
        else:
            print form.errors
    else:
        # If the request was not a POST, display the form to enter details.
        form = ContentSheetForm()

    # Bad form (or form details), no form supplied...
    # Render the form with error messages (if any).
    context = {'user_sentence_form': form}
    return render(request, 'lf_classifier/insert_text.html', context)
HTML:

<form id="user_sentence_form" method="post" enctype="multipart/form-data" action="/lf_classifier/send_text/">
                {% csrf_token %}

                {% for field in user_sentence_form.visible_fields %}
                    {{ field.errors }}
                    {{ field.help_text }}
                    {{ field }}
                {% endfor %}

                <input type="submit" data-icon="action" data-iconpos="right" name="submit" data-inline="true" value="upload" />
            </form>

{%csrf_令牌%}
{user_statement_form.visible_fields%}
{{field.errors}}
{{field.help_text}
{{field}}
{%endfor%}

您尚未将文件数据传递给表单

form = ContentSheetForm(request.POST, request.FILES)

您尚未将文件数据传递给表单

form = ContentSheetForm(request.POST, request.FILES)
添加数据ajax=“false”解决了我的问题。固定HTML:

<form id="user_sentence_form" method="post" enctype="multipart/form-data" data-ajax="false"  action="/lf_classifier/send_text/">
            {% csrf_token %}

            {% for field in user_sentence_form.visible_fields %}
                {{ field.errors }}
                {{ field.help_text }}
                {{ field }}
            {% endfor %}

            <input type="submit" data-icon="action" data-iconpos="right" name="submit" data-inline="true" value="upload" />
        </form>

{%csrf_令牌%}
{user_statement_form.visible_fields%}
{{field.errors}}
{{field.help_text}
{{field}}
{%endfor%}
添加
数据ajax=“false”
解决了我的问题。固定HTML:

<form id="user_sentence_form" method="post" enctype="multipart/form-data" data-ajax="false"  action="/lf_classifier/send_text/">
            {% csrf_token %}

            {% for field in user_sentence_form.visible_fields %}
                {{ field.errors }}
                {{ field.help_text }}
                {{ field }}
            {% endfor %}

            <input type="submit" data-icon="action" data-iconpos="right" name="submit" data-inline="true" value="upload" />
        </form>

{%csrf_令牌%}
{user_statement_form.visible_fields%}
{{field.errors}}
{{field.help_text}
{{field}}
{%endfor%}

显示您的内容页模型在
内容页中是否有其他字段
或者它只是
内容页名称
内容页文件
?您在哪个字段上得到错误?它有什么价值吗?你需要在模型中提到一个路径,比如
FileField(上传到class='directory\u name/')
@Exprator,我将upload_添加到了“uploads/”中,但它仍然不起作用,并给出了相同的消息您的视图在哪里?显示您的内容页模型在
内容页
中是否还有其他字段,或者它只是
内容页_名称
内容页_文件
?您在哪个字段上得到错误?它有什么价值吗?你需要在你的模型中提到一个路径,比如
FileField(upload_to='directory_name/)
@Exprator,我在='uploads/'中添加了upload_to='uploads/',但它仍然不起作用,并给出相同的消息,你的视图在哪里?在这个问题上投票并更新了你的修复程序-但仍然得到相同的错误:(在问题中投票并更新您的修复程序-但我仍然得到相同的错误:(