表格未注册照片Django 3.0
我正试图上传一张照片,但表单没有看到文件和表单中的内容。错误,它显示“此字段为必填字段”。我尝试过使用表格未注册照片Django 3.0,django,django-forms,django-views,Django,Django Forms,Django Views,我正试图上传一张照片,但表单没有看到文件和表单中的内容。错误,它显示“此字段为必填字段”。我尝试过使用picture=request.FILES['picture']但没有效果,也尝试过picture=form.FILES['picture']以及picture=request.POST.FILES['picture']和picture=form.cleaned\u data.get('picture')我缺少什么?如果您需要更多信息,请告诉我 模板 {% block content %} &l
picture=request.FILES['picture']
但没有效果,也尝试过picture=form.FILES['picture']
以及picture=request.POST.FILES['picture']
和picture=form.cleaned\u data.get('picture')
我缺少什么?如果您需要更多信息,请告诉我
模板
{% block content %}
<h1>Create {{post_type.title}} Post</h1>
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{{form.as_p}}
<button type='submit'>Submit</button>
</form>
{% endblock %}
views.py
@login_required()
def picture_post(request):
"""
Creates new picture post
"""
if request.method == "POST":
form = PicturePostForm(request.POST)
print("is post")
if form.is_valid():
print("is valid") # this never gets printed because of the 'this field is required' error
author = request.user
content = form.cleaned_data['description']
category = form.cleaned_data['categories']
picture = form.cleaned_data['picture']
privacy = form.cleaned_data['privacy']
p_post = PicturePost(author=author, description=content, categories=category, picture=picture,privacy=privacy )
p_post.save()
#redirect to last page
return redirect('home')
else:
l = []
for i in form.errors.keys():
l.append(form.errors[i])
return HttpResponse(l)
else:
post_type = 'picture'
form = PicturePostForm()
return render(request, 'create_post.html', {'form': form, 'post_type': post_type})
相应的模型字段
picture = models.ImageField(upload_to=f'profiles/{User}_gallery', max_length=255)
通过将
form=PicturePostForm(request.POST)
替换为form=PicturePostForm(request.POST,request.FILES)
我以前尝试过完成代码,请遵循
视图
@login_required()
def picture_post(request):
"""
Creates new picture post
"""
form = PicturePostForm(request.POST or None, request.FILES or None)
if request.method == "POST":
if form.is_valid():
# instance new object p_post (this best practice if using forms.ModelForm)
# commit=False (to save data on ram/memory device without database/hardrive)
p_post = form.save(commit=False)
# assign author attribute from thr current user session
p_post.author = request.user
# commit=True to move/save data from memory to harddrive
p_post.save() # p_post.save(commit=True)
return redirect('home')
else:
l = []
for i in form.errors.keys():
l.append(form.errors[i])
return HttpResponse(l)
post_type = 'picture'
return render(request, 'create_post.html', {'form': form, 'post_type': post_type})
不建议使用此代码content=form.cleaned_data['description']初始化变量以赋值,因为本例在forms.Oh上使用了forms.ModelForm!好的,谢谢你提供的信息;我甚至没想过。
@login_required()
def picture_post(request):
"""
Creates new picture post
"""
form = PicturePostForm(request.POST or None, request.FILES or None)
if request.method == "POST":
if form.is_valid():
# instance new object p_post (this best practice if using forms.ModelForm)
# commit=False (to save data on ram/memory device without database/hardrive)
p_post = form.save(commit=False)
# assign author attribute from thr current user session
p_post.author = request.user
# commit=True to move/save data from memory to harddrive
p_post.save() # p_post.save(commit=True)
return redirect('home')
else:
l = []
for i in form.errors.keys():
l.append(form.errors[i])
return HttpResponse(l)
post_type = 'picture'
return render(request, 'create_post.html', {'form': form, 'post_type': post_type})