图像将不会从django中的表单上载。如果从管理面板输入图像,而不是从表单输入,则图像将上载

图像将不会从django中的表单上载。如果从管理面板输入图像,而不是从表单输入,则图像将上载,django,image,Django,Image,如果通过表单完成,图像将不会上载。如果图像通过管理界面上传,它将正常工作。。在研究了几个小时的文档和谷歌之后,我想不出哪里出了问题 如果有人有任何线索,我将不胜感激 模型 form.py class AddEventForm(forms.ModelForm): class Meta: model = Event fields = ('event_name','event_date','event_location','event_t

如果通过表单完成,图像将不会上载。如果图像通过管理界面上传,它将正常工作。。在研究了几个小时的文档和谷歌之后,我想不出哪里出了问题 如果有人有任何线索,我将不胜感激

模型

form.py

class AddEventForm(forms.ModelForm):
        class Meta:
            model = Event
            fields = ('event_name','event_date','event_location','event_type','event_description','event_img')
模板

{% extends '_base.html' %}
{% load materializecss %}
{% block title %} Add  Event{% endblock title %}

{% block content %}

<div class="container" >
    <h1>Add Event </h1><i class = 'material-icons large'>pedal_bike</i><i class = 'material-icons large blue-text'>directions_walking</i><i class = 'material-icons small green-text'>
    directions_running</i>
</i>
    <form method = 'POST' enctype="multipart/form-data">
        {% csrf_token %}
        {{form|materializecss}}
        <button type = 'submit' class = 'btn waves-effect waves-light amber lighten-2 black-text hoverable'>Add Event
            <i class = 'material-icons right'>send</i></button>
    </form>
</div>
{% endblock content %}
我已经编辑了这个问题,并为表单添加了views.py文件 再次感谢您的帮助

def add_event(request):
    submitted = False
    if request.method == 'POST':
        form = AddEventForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/Event/List/')
    else:
        form = AddEventForm()
        if 'submitted' in request.GET:
            submitted = True

    return render(request,'add-event.html', {'form':form, 'submitted':submitted })

您还需要将
request.FILES
传递到表单,
request.POST
仅包含表单中填写的项目,而不包含上载的文件:

def add_event(request):
    submitted = False
    if request.method == 'POST':
        form = AddEventForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/Event/List/')
    else:
        form = AddEventForm()
        submitted = 'submitted' in request.GET

    return render(request,'add-event.html', {'form':form, 'submitted':submitted })
def添加事件(请求):
提交=错误
如果request.method==“POST”:
form=AddEventForm(request.POST、request.FILES)
如果form.is_有效():
form.save()
返回HttpResponseRedirect(“/Event/List/”)
其他:
form=AddEventForm()
submitted='submitted'在request.GET中

返回render(请求,'add-event.html',{'form':表单,'submitted':submitted})
request.POST只包含文本字段,而不是图像或文件 您还需要传递request.FILES以获取文件或图像

def add_event(request):
    submitted = False
    if request.method == 'POST':
        form = AddEventForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/Event/List/')
    else:
        form = AddEventForm()
        if 'submitted' in request.GET:
            submitted = True

    return render(request,'add-event.html', {'form':form, 
'submitted':submitted })

你上传数据的地方的视图是什么样子的?我已经在问题中添加了views.py文件,在盯着代码看了几个小时后,这有助于你有一个新的视角。。现在很有魅力
def add_event(request):
    submitted = False
    if request.method == 'POST':
        form = AddEventForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/Event/List/')
    else:
        form = AddEventForm()
        submitted = 'submitted' in request.GET

    return render(request,'add-event.html', {'form':form, 'submitted':submitted })
def add_event(request):
    submitted = False
    if request.method == 'POST':
        form = AddEventForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/Event/List/')
    else:
        form = AddEventForm()
        if 'submitted' in request.GET:
            submitted = True

    return render(request,'add-event.html', {'form':form, 
'submitted':submitted })