首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图像提交提高ValidationError

图像提交提高ValidationError
EN

Stack Overflow用户
提问于 2018-06-02 11:46:16
回答 1查看 60关注 0票数 1

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

models.py

代码语言:javascript
复制
from django.db import models

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

forms.py

代码语言:javascript
复制
from django import forms
from .models import picture

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

views.py

代码语言:javascript
复制
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(应用程序级urls)

代码语言:javascript
复制
from django.urls import path
from . import views

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

]

Urls.py(目录级urls)

代码语言:javascript
复制
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)

媒体文件

代码语言:javascript
复制
MEDIA_URL ='/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'media')

模板

代码语言:javascript
复制
<form method="post">
    {% csrf_token %}
    {{form.as_p}}
    <input value="submit" type="submit">
</form>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-02 11:54:53

基于doc:上传-带模型的文件

您应该初始化您的表单:

代码语言:javascript
复制
form = pictureForm(request.POST, request.FILES)

在模板中,您需要添加Enctype=“多部分/表格-数据”

代码语言:javascript
复制
<form method="post" enctype="multipart/form-data">
    {% csrf_token %}
    {{form.as_p}}
    <input value="submit" type="submit">
</form>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50656576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档