缘起是这样的,我学习Flask已经有很长时间了,然后纠结了好久自己终于写了一个像模像样的博客(当然,这只是自己练手的项目),其中除了学习实践以外,更多的是瞎蒙。
当然,我自己是不承认瞎蒙的,究竟是我一个字一个字的打出来的,代码粗糙倒是有可能。
作为在编程的人来说,是需要时刻保证学习状态的,《编程珠玑》的作者也是这样说的,谁没写过糟糕的代码呢?然而这些都是靠学习来弥补的,一次一次的将自己的代码进化。
我以前老实看不懂为什么有这么多配置,有的视频教程一个配置项就给你鼓捣出几堂课(通常都是几个小时),现在我懂了,为很么要这样。
@avatar.setter
def avatar(self, image_data):
if 64 < len(image_data) < 1024 * 1024:
import imghdr
import os
ext = imghdr.what("", h=image_data)
if ext in setting['image_type'] and not self.is_xss_image(image_data):
if self._avatar and os.path.exists(setting['avatar_path'] + self._avatar):
os.unlink(setting['avatar_path'] + self._avatar)
file_path = str(setting['avatar_path'] + self.uuid + '.' + ext)
with open(file_path, 'wb') as f:
f.write(image_data)
self._avatar = self.uuid + '.' + ext
else:
raise validate.ValidateError("only is png jpeg jpg gif and bmp")
else:
raise validate.ValidateError("容量必须在1M以下,64KB以上")
例如这一段的setting[‘image_type],我前面是这样写的
if ext in ['png', 'jpeg', 'jpg', 'gif', 'bmp'] and not self.is_xss_image(image_data):
if self._avatar and os.path.exists(setting['avatar_path'] + self._avatar):
os.unlink(setting['avatar_path'] + self._avatar)
file_path = str(setting['avatar_path'] + self.uuid + '.' + ext)
假设阿,你的老板说,我还希望可以上传psd格式的文件,你是不是要改疯阿(编辑器里,各种上传图片的调用方法里)?如果在配置里改,你就发现这个还不错,只需要在配置文件里改一下,所有相关的东西全都该过来了。
编程就跟学骑自行车一样,你不必要先搞清楚自行车每一个零件是怎样组装的,你只需要注意到你能不能骑上去,能跑。后来,你就会认识到,这个呀盘歪了会掉链条,飞轮坏了会踩空等。
所以呢,我就是这样,一边自己瞎鼓捣,一边看人家的前人的经验,然后自己再总结归纳,后来,这些代码就变得很简练了。
这里不是为了晒啥,只是写下来提醒自己,不要停止学习。附一段代码,自己写的
class SignUpHandler(BaseHandler):
def data_received(self, chunk):
pass
def get(self, *args, **kwargs):
kwargs = {
"msg": "用户注册",
"form": signup.SignUpForm()
}
self.render("passport/accounts/auth/SignUp.html", **kwargs)
def post(self, *args, **kwargs):
data = self.json.loads(self.request.body)
form = signup.SignUpForm.from_json(data)
if form.validate():
result = auth_signup(self, data['name'], data['password'])
if result['status'] is False:
return self.write({"status": False, "message": result['msg'], "url": self.request.url})
else:
return self.write({"status": True, "message": result['msg']})
else:
for key in form.errors:
return self.write({"status": False, "message": str(form.errors[key])})
参考文献