django - Django Image 字段不更新图像
问题描述
我最近遇到一个问题,我的 django 应用程序中的 django 图像字段在按下“发布”后没有更新图像。在管理面板中一切正常。也许我错过了什么......让我知道。
模型.py
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
from django.urls import reverse
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
date_posted = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)
categories = models.ManyToManyField('Category', related_name='posts')
image = models.ImageField(upload_to='images', default="images/None/no-img.jpg")
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('post-detail', kwargs={'pk': self.pk})
class Category(models.Model):
name = models.CharField(max_length=20
)
视图.py
from django.shortcuts import render, get_object_or_404
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
from .models import Post
from django.contrib.auth.models import User
from django.views.generic import ListView, DetailView, CreateView, UpdateView, DeleteView
def home(request):
content = {
'posts': Post.objects.all()
}
return render(request, 'blog/home.html', content)
def blog_category(request, category):
posts = Post.objects.filter(categories__name__contains=category).order_by('-date_posted')
content = {
'category': category,
'posts': posts
}
return render(request, 'blog/blog_category.html', content) #<--(didn't add content block) bug found 05.11.19
def upload_pic(request):
if request.method == 'POST':
form = ImageUploadForm(request.POST, request.FILES)
if form.is_valid():
m = ExampleModel.objects.get(pk=course_id)
m.model_pic = form.cleaned_data['image']
m.save()
return HttpResponse('image upload success')
return HttpResponseForbidden('allowed only via POST')
...
class PostCreateView(LoginRequiredMixin, CreateView):
model = Post
fields = ['title', 'content', 'categories', 'image']
def form_valid(self, form):
form.instance.author = self.request.user
return super().form_valid(form)
class PostUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
model = Post
fields = ['title', 'content', 'categories', 'image']
def form_valid(self, form):
form.instance.author = self.request.user
return super().form_valid(form)
我最近刚刚在我的网络应用程序中添加了类别和图像部分,类别部分工作正常,但default
即使我选择当前图像,图像字段也会发布。在管理领域它运作良好,所以我决定向社区询问这个烦人的问题。
解决方案
确保模板中的表单enctype
设置正确:
请注意,request.FILES 仅在请求方法为 POST 并且发布请求的具有属性enctype="multipart/form-data"时才会包含数据。否则, request.FILES 将为空。
推荐阅读
- go - Go ctx.Done() 永远不会在 select 语句中触发
- c# - 用于限制每秒请求的信号量不起作用
- java - org.apache.maven.plugins.enforcer.RequireUpperBoundDeps 失败并显示消息:
- javascript - 读取下载的文件 ReactJS
- python - 使用正则表达式从单个字符串中解析字符串模式
- woocommerce - 我正在使用脚本不发送电子邮件进行零续订它适用于客户电子邮件但不适用于管理员电子邮件
- kotlin - 未解决的引用:使用 `it` 引用数字类型时的 MAX_VALUE
- javascript - JS:如何为页面滚动添加摩擦/动力?
- python - 如何使用模仿此 R 代码行为的 Python 将文件发布到服务器?
- databricks - Aws S3 到 Databricks 挂载不起作用