我正在设置图像压缩。
def compress(image):
im = Image.open(image)
# create a BytesIO object
im_io = BytesIO()
#resize image
im = im.convert("RGB")
im = im.save(im_io,'JPEG', quality=70, optimize=True)
# create a django-friendly Files object
new_image = File(im_io, name=image.name)
return new_image
class Post(models.Model):
slug = models.SlugField(max_length=100, allow_unicode=True, blank=True)
image = models.ImageField(storage=PublicMediaStorage(), upload_to=path_and_rename, validators=[validate_image])
def save(self, *args, **kwargs):
#image compression start
if self.image:
# call the compress function
new_image = compress(self.image)
# set self.image to new_image
self.image = new_image
#image compression end
super(Post,self).save(*args, **kwargs)
当用户提交表单时,我会得到以下错误
Reverse for 'post-detail' with arguments '(8, '')' not found. 1 pattern(s) tried: ['post/(?P<pk>[0-9]+)/(?P<slug>[-a-zA-Z0-9_]+)/$']
我相信这个错误是由这行super(Post,self).save(*args, **kwargs)
引起的,因为段塞没有被传入,但是我想不出如何传递这个弹格。
urls
path('', views.home, name='blog-home'),
path('user/<str:pk_user>/', views.UsersCarsPosts, name='user-posts'),
path('post/new/', views.createPostView, name='post-create'),
path('post/<int:pk>/<slug:slug>/', views.DetailPostView, name='post-detail'),
path('post/<int:pk>/<slug:slug>/update/', PostUpdateView.as_view(), name='post-update'),
path('post/<int:pk>/<slug:slug>/delete/', PostDeleteView.as_view(), name='post-delete'),
更新:
在我提交表单后,我检查DB,所有字段都在那里,但是段塞字段是空的。将继续挖掘
更新:
我哑口无言,没有意识到我在模型上有两种保存方法。
发布于 2022-02-15 18:05:11
(?P<slug>[-a-zA-Z0-9_]+
意味着弹格必须是一个或多个字符的字符串。但是,您正在传递''
。你得弄清楚为什么子弹是空的。
https://stackoverflow.com/questions/71129663
复制相似问题