Django和Flask在使用过滤器方面有什么区别?

时间:2018-10-08 03:01:58

标签: python sqlalchemy django-orm

世界各地的朋友们,有一个问题困扰着我好几天。当我使用Django时,我使用了obj=User.objects.filter(uname=username,pwd=password),User是一个类,可以迁移到MySQL,但是当我使用Flask {{1}我需要这样做才能实现登录。我认为Django和Flask之间有些不同。我知道“ =”是分配运算符,而“ ==”是关系运算符。感谢您能为我提供帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

首先,不是FlaskDjango做这种事情!

Flask一起使用的是SQL-Alchemy,而与Django一起使用的是Django ORM。您可以单独使用它们,而无需Flask或{{ 1}}项目!

在两个代码片段上,您都将一个对象分配给一个变量!

Django

等于MySQL查询

obj = User.objects.filter(uname=username,pwd=password)

同时

SELECT * 
FROM users 
WHERE uname = <username> AND pwd = <password>;

等于MySQL查询

obj = User.query.filter(User.uname == username, User.pwd == password).first()

因此SELECT * FROM users WHERE uname = <username> AND pwd = <password> LIMIT BY 1; 将返回满足我们条件的可迭代行!

您可以在Django ORM上使用all()代替first(),并获得与SQL-Alchemy相同的结果!

Django ORM上有一个名为filter_by()的方法,它看起来更像您的SQL-Alchemy示例,如果最后使用Django ORM,它仍然只会得到一个或404,但是您可以在不使用条件运算符的情况下设置条件,而只需在方法参数上分配它们即可,例如:

first()

选中此StackOverflow Question,以获取有关obj = User.query.filter_by(uname=username, pwd=password).first() 上的filterfilter_by的更多信息