用 Django 写 web 写的无比痛苦,是我的问题吗?
Python 虽然对我来说还有一点点小别扭的地方(比如明明是一切皆对象,却使用 len(obj)而不是 obj.len()),总体来说写起来还是比较爽,语法比较简单,调试工具链完善,网上能找到的资料也多。
但是 Django 简直让我痛苦无比。
按照官方文档,router 层无法定义请求类型,要在 ViewController 里面写 if request.method == “POST” 。
畸形的模板系统,无法在模板层写脚本,这点我可以理解是架构的设计考虑到不想在模板层引入逻辑,但放着 python 这么有表现力的语言不用,硬是发明了一个新的模板语法,实在是理解不能。
细节的问题更加数不胜数
比如写一些复杂的 View,需要把同一个资源的 POST 和 GET 方法拆开写
post /api/resources create_resource_view
get /api/resources list_resource_view
居然发现 Django 的 router 不支持把这种约定俗成的 RESTful api 导向不同的文件
模板层也各种难受,API 接受到 string 格式的 date 参数,需要转成 date 格式存入数据库,这么一个任何一个 APP 都会遇到无数次的逻辑,都需要 hard coding 或三行以上的代码来处理
API 参数验证也很糟糕,ORM 也很糟糕,一吐槽都停不下来,哪里哪里都很糟糕