django - 问题是图像没有保存。当我选择图像并上传所有代码正常工作但图像不保存 django
问题描述
问题是图像没有保存。当我选择图像并上传所有正常工作但图像不保存的代码时。我逐行检查了所有代码我不明白是什么问题。我还看到媒体文件是否保存了任何图像,但未保存图像。
这是这个文件中的models.py 我使用图像字段 models.py
class Answer (models.Model):
question=models.ForeignKey(Question,on_delete=models.CASCADE)
user=models.ForeignKey(User,on_delete=models.CASCADE, null=True)
img=models.ImageField(null=True,blank=True,upload_to='Answer_Img')
detail=RichTextUploadingField()
add_time=models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.detail
表格.py
class AnswerForm(ModelForm):
class Meta:
model=Answer
fields=('detail','img')
labels={'img':'Upload Image'}
视图.py
def answer(request,pk,slug):
try:
trend=Question.objects.get(pk=pk,slug=slug)
except:
raise Http404("Post Does Not Exist")
tags=trend.tags.split(',')
ans=Answer.objects.filter(question=trend)
answerform=AnswerForm
if request.method=='POST':
answerData=AnswerForm(request.POST)
if answerData.is_valid():
answer=answerData.save(commit=False)
answer.question=trend
answer.user=request.user
answer.save()
p=messages.success(request,'Answer has been submitted.')
return HttpResponseRedirect(trend.slug)
return render(request,"ask/answer.html" ,{
'trends':trend,
'tags':tags,
'answer':ans,
'form':answerform,
})
答案.html
{% if user.is_authenticated %}
<div class="container">
<div class="py-5 text-center bg-secondary text-white">
<h1 class="mb-3">Upload Image</h1>
<form action="" method="post" enctype="multipart/form-data">
{% csrf_token %}
{{form}}
<input type="submit" class="btn btn-danger" value="Upload">
</form>
</div>
{% else %}
<h3><P>Sign In/Sign Up before posting answers</P></h3>
<h4><li><a href="{% url 'account_login' %}" class=" text-left text-info">Sign In</a></li><h4>
<h4> <li><a href="{% url 'account_signup' %}" class=" text-left text-info">Sign Up</a></li><h4>
{% endif %}
设置.py
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
网址.py
urlpatterns = [
# my url patterns here
]
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL, document_root = settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)
解决方案
使用 request.files 获取 img。请检查媒体文件夹是否在您的基本目录中,并且子文件夹的名称是否正确。
if request.method == "POST":
answer_form = Answer_form(data=request.POST)
if(answer_form.is_valid()):
ans = answer_form.save(commit=False)
#ans.user = user
if 'img' in request.FILES:
ans.img = request.FILES['img']
ans.save()
else:
print(answer_form.errors)
这是文档页面:
推荐阅读
- xcode - 在 XCUITest 中检查应用程序安装
- python - 这是一个无约束的多变量优化问题,是解决的最佳方法吗?
- ubuntu - 如何在 Windows 上运行多个 WSL2 实例?
- php - 如何在 laravel Blade 中渲染 html
- rust - 确保 actix 按时间顺序记录 // 预处理
- javascript - 组件内部的 Apollo 状态管理
- machine-learning - Band RNN 的计算精度
- r - 闪亮的每日数据刷新
- next.js - Next.js 中带有查询参数的路由的正确文件夹结构是什么?
- ruby-on-rails - 无法在带有博客文章和类别的 Rails 中创建 SEO 路由