世界各地的朋友们,有一个问题困扰着我好几天。当我使用Django时,我使用了obj=User.objects.filter(uname=username,pwd=password)
,User是一个类,可以迁移到MySQL,但是当我使用Flask {{1}我需要这样做才能实现登录。我认为Django和Flask之间有些不同。我知道“ =”是分配运算符,而“ ==”是关系运算符。感谢您能为我提供帮助,谢谢!
答案 0 :(得分:0)
首先,不是Flask
或Django
做这种事情!
与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()
上的filter
与filter_by
的更多信息