你注意到使用Django框架的最大错误是什么?您是否看到过一些真正的误用,可能应该作为对Django文档的警告?
oza*_*zan 27
视图中的逻辑过多.
我曾经写过难以适应40行的观点.现在我考虑超过2-3个缩进级别,10个左右的LOC或一些内联注释,以便代码味道.
诱惑是编写最小模型,找出您的网址路由,然后在视图中执行其他操作.实际上,您应该使用模型方法,管理器,模板标签,上下文处理器,基于类的视图和抽象基本视图......保持视图代码简单易读的任何东西.保存表单的逻辑应该在Form.save()中.在多个视图的开头或结尾重复的逻辑应该放在装饰器中.重用的显示逻辑应该包含included模板,模板标签和过滤器.
长视图很难阅读,理解和调试.学习如何使用工具包中的其他工具,您将为自己和团队节省很多痛苦.
Ale*_*nor 12
不要将内容分成多个应用程序.它不是关于可重用性,而是关于拥有十几个模型,并且在一个应用程序中有超过100个视图,它是不可读的.另外,我希望能够轻松扫描我的urls.py文件以查看URL指向的位置,当我有100个更难的URL时.
Rob*_*ner 11
我试图将项目附加到我的会话而不将其复制出来,附加项目,然后将列表添加回会话.
这个错误出现在NewbieMistakes页面上,所以希望我能够很好地合作.
这是正确的方法,以防万一有人好奇.
sessionlist = request.session['my_list']
sessionlist.append(new_object)
request.session['my_list'] = sessionlist
Run Code Online (Sandbox Code Playgroud)
我认为最大的问题是人们尝试编写好像是Java/C的代码:他们试图创建过于通用的应用程序,这些应用程序在未来需求发生变化时永远不需要更改(这对Java/C来说是必要的,因为这些应用程序并非如此易于更改/重新设计).结果是一个非常复杂的应用程序,它不灵活且无法维护.
在Django中没有必要:只需编写今天的需求,使用已定义的特定任务构建可重用的应用程序,并在需要时进行更改.我越来越多地发现自己试图尽可能简单地编写内容,不惜一切代价避免过于复杂的设计.
使用预保存和后保存事件进行修改.
如果你不能简单地进行save,你应该重新考虑你想要做的事情.毕竟,它只是一个关系数据库.如果您正在做的事情太复杂,那么您将遇到ORM映射问题.
尝试编写超级通用 - 一个视图就是一切 - 功能.视图函数是函数的原因.他们可以使用模块,包,对象,其他功能等.它们可以很短且类似,而不会产生代码味道.
如果你需要使用10行代码来构造uber-generic-do-it-all对象,它将是一个没有uber-generic-do-it-all对象的12行视图函数,那么uber-对象没有帮助.
在ORM模型类上强加了太多超级复杂的对象类设计.如果它需要抽象基类或元类,则在ORM层中表现不佳.
未能利用tests.py和测试客户端创建完整的单元测试,无论它声称应用程序是什么.
小智 5
最糟糕的facepalm时刻......返回一个无限的查询,恰好是几十万行.它是在一个很少使用的代码中,因此不经常发生,但是当它发生时它会导致服务器崩溃.
始终确保您的查询结果有限,即:
results = MyModel.query.all()[:100]
Run Code Online (Sandbox Code Playgroud)
不:
results = MyModel.query.all()
Run Code Online (Sandbox Code Playgroud)
或使用迭代器:
for result in MyModel.query.iterator():
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2322 次 |
| 最近记录: |