【问题标题】:Image submit raising ValidationError图片提交引发ValidationError
【发布时间】:2018-06-02 11:46:16
【问题描述】:

当我提交 jpg 图像时,它会刷新并显示“需要此字段”验证错误,因此在我尝试打印的视图中(request.POST),它在控制台中显示 csrfmiddlewaretoken 和 pic,但字段验证被违反.请纠正我。

models.py

from django.db import models

class picture(models.Model):
    pic = models.ImageField(upload_to='documents/')

forms.py

from django import forms
from .models import picture

class pictureForm(forms.ModelForm):
    class Meta:
        model = picture
        fields = ['pic',]

views.py

from django.shortcuts import render,redirect
from .models import picture
from .forms import pictureForm
# Create your views here.
def pictureView(request):
    if request.method == 'POST':
        print(request.POST)
        form = pictureForm(request.POST)
        if form.is_valid():

            form.save()

            return redirect('/')
    else:
        form = pictureForm()
    return render(request,'home.html',{'form':form})

urls.py(APP级别的url)

from django.urls import path
from . import views

urlpatterns = [
    path('',views.pictureView, name = 'home')

]

urls.py(目录级url)

from django.contrib import admin
from django.urls import path,include
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('admin/', admin.site.urls),
    path('',include('post.urls')),
]
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

媒体文件

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

模板

<form method="post">
    {% csrf_token %}
    {{form.as_p}}
    <input value="submit" type="submit">
</form>

【问题讨论】:

    标签: python html django-models django-forms


    【解决方案1】:

    基于文档:uploaded-files-with-a-model

    你应该初始化你的表单:

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

    在你需要的模板中添加enctype="multipart/form-data"

    <form method="post" enctype="multipart/form-data">
        {% csrf_token %}
        {{form.as_p}}
        <input value="submit" type="submit">
    </form>
    

    【讨论】:

    • 不,先生,它没有工作.. 仍然显示这样的验证错误!当我上传 jpg 文件时。
    • 我扩展了答案,现在应该没问题。
    猜你喜欢
    • 1970-01-01
    • 2020-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-07
    • 2021-07-12
    • 1970-01-01
    相关资源
    最近更新 更多