记录一些遇到的坎,为自己为他人
File 读取Image 不保存
File读取PIL.Image,但不保存到本地。
业务场景:生成图片后存储在数据库中,如果生成的图片保存在本地再存储到数据库的话会存在两张图,因此要求读取Image后保存。
而网上都是Image.open(file_path)
Image读取File和img.save(file_name, format)
保存到本地的例子。
解决方案:
from io import BytesIO
output = BytesIO()
img.save(output, 'PNG')
django_file = File(output)
img.save第二个参数 format对应图片格式,不加会抛异常。
模板校验后提交Form表单
业务场景: Form表单需要校验,如果校验通过提交Form,否则弹出提示信息。
解决方案: Form 添加onsubmit
事件,绑定返回布尔值的方法(返回false阻止提交,返回true自动提交),顺便提一句,后台校验还是很有必要的,Django也提供了解决方案。
<form id="form" method="post" action="..." onsubmit="return submit_post()">.......</form>
function submit_post(){
var name = $('.input').val(); // 获取输入框内容
if(name === undefined || name.length < 2){
// 输入值长度小于2提示用户
alert('Please enter the correct user name');
return false;
}
$('.form').submit();
return true;
}
参考:[How do I stop form from automatically submitting? (Django/jQuery)]
(https://stackoverflow.com/a/21367360/8258566)