Python 如何让用户进入会话

Python 如何让用户进入会话,python,flask,Python,Flask,我已经试过了 user=users.query.filter(db.and_(users.username == request.form['username'] ,users.password==request.form['password'])).first() ,但它不起作用您的方法存在一些突出的问题。请务必首先阅读有关处理会话的Flask文档,它为您提供了一个非常好的示例: 从烧瓶导入烧瓶、会话、重定向、url\u、转义、请求 从werkzeug.security导入检查\u密码\

我已经试过了

user=users.query.filter(db.and_(users.username ==  request.form['username'] ,users.password==request.form['password'])).first()

,但它不起作用

您的方法存在一些突出的问题。请务必首先阅读有关处理会话的Flask文档,它为您提供了一个非常好的示例:

从烧瓶导入烧瓶、会话、重定向、url\u、转义、请求
从werkzeug.security导入检查\u密码\u散列
app=烧瓶(名称)
app.secret_key=b“u5”y2L“F4Q8z\n\xec]/”
def get_会话_用户():
如果“用户名”不在会话中:
一无所获
用户名=会话['username']
#以某种方式从数据库中获取用户
user=db。通过用户名(username)获取用户
返回用户
def验证_密码(散列:str,密码:str)->bool:
返回检查\u密码\u散列(散列,密码)
@应用程序路径(“/”)
def index():
user=get\u session\u user()
如果用户:
返回“您以{user.username}身份登录”
返回“请”
@app.route('/login',methods=['GET','POST'])
def login():
如果request.method==“POST”:
用户名=请求。表单['username']
密码=请求。表单['password']
user=db。通过用户名(username)获取用户
如果不是用户:
返回“没有这样的用户”
#希望您正在数据库中存储哈希密码
#您需要检查凭据是否与数据库中存储的内容匹配
如果未验证\u密码(user.hash\u密码,password):
返回“无效凭据”
会话['username']=user.username
返回重定向(“/”)
返回“”'
登录
'''
@app.route(“/logout”)
def注销():
session.pop('username',无)
返回重定向(“/”)

您的方法存在一些突出的问题。请务必先阅读有关处理会话的Flask文档,这为您提供了一个非常好的示例:

从烧瓶导入烧瓶、会话、重定向、url\u、转义、请求
从werkzeug.security导入检查\u密码\u散列
app=烧瓶(名称)
app.secret_key=b“u5”y2L“F4Q8z\n\xec]/”
def get_会话_用户():
如果“用户名”不在会话中:
一无所获
用户名=会话['username']
#以某种方式从数据库中获取用户
user=db。通过用户名(username)获取用户
返回用户
def验证_密码(散列:str,密码:str)->bool:
返回检查\u密码\u散列(散列,密码)
@应用程序路径(“/”)
def index():
user=get\u session\u user()
如果用户:
返回“您以{user.username}身份登录”
返回“请”
@app.route('/login',methods=['GET','POST'])
def login():
如果request.method==“POST”:
用户名=请求。表单['username']
密码=请求。表单['password']
user=db。通过用户名(username)获取用户
如果不是用户:
返回“没有这样的用户”
#希望您正在数据库中存储哈希密码
#您需要检查凭据是否与数据库中存储的内容匹配
如果未验证\u密码(user.hash\u密码,password):
返回“无效凭据”
会话['username']=user.username
返回重定向(“/”)
返回“”'
登录
'''
@app.route(“/logout”)
def注销():
session.pop('username',无)
返回重定向(“/”)

我已经看到了这一点,但当我想将图片添加到个人资料页面时,它对我没有帮助,我必须让用户进入会话并调用,但我无法这样做。一旦您从DB查询
用户
,您需要将用户id存储在会话
会话['user\u id']=user.id
。然后,当您需要访问用户信息时,您从会话中检索
user\u id
返回
user\u id=session['user\u id']
并从数据库中查询用户,然后随心所欲地使用模型实例。post=posts(title=request.form['title'],content=request.form['content'],image=filename,user=app.config['user'])我将此用于关系,在这种情况下,我不想只保留Id,我想保留object在会话中存储大型对象很少是个好主意,因为在客户机-服务器之间来回交换大量cookie会降低操作速度。我已经更新了我的帖子,以更多地反映您的用例,修改它以满足您的需要。我已经看到了这一点,但它对我没有帮助。当我想将图片添加到个人资料页面时,我必须让用户进入会话并打电话,但我无法从数据库中查询
用户
,您需要在会话
会话['user\u id']=user.id
中存储用户id。然后,当您需要访问用户信息时,您从会话中检索
user\u id
返回
user\u id=session['user\u id']
并从数据库中查询用户,然后随心所欲地使用模型实例。post=posts(title=request.form['title'],content=request.form['content'],image=filename,user=app.config['user'])我将此用于关系,在这种情况下,我不想只保留Id,我想保留object在会话中存储大型对象很少是个好主意,因为在客户机-服务器之间来回交换大量cookie会降低操作速度。相反,只保留您需要识别用户的内容,而不是更多。我更新了我的帖子,以更多地反映您的用例,修改它以满足您的需要
app.config['user'] = user and session['user']=user