首页 > 解决方案 > 如何在 Flask SQLAlchemy 中通过用户名获取用户位置的 api 调用路由

问题描述

我正在尝试通过用户名获取用户位置(他们在注册时输入)的路线。我不知道该怎么做。

这是我的桌子

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), nullable=False, unique=True)
    password = db.Column(db.String(), nullable=False)
    location = db.Column(db.String(), nullable=True)

    def __init__(self, username, password, location):
        self.username = username
        self.password = password
        self.location = location

class UserSchema(ma.Schema):
    class Meta:
        fields = ("id", "username", "password", "location")

user_schema = UserSchema()
many_users_schema = UserSchema(many=True)

这是我的路线

@app.route("/location/get/data/<username>", methods=["GET"])
def get_location_by_username(username):
    user_id = db.session.query(User.id).filter(User.username == username).first()[0]
    user_location = db.session.query(User).filter(User.user_id == username).first()[0]
    return jsonify(user_schema.dump(user_location))

标签: pythonapiflaskflask-sqlalchemy

解决方案


这是用户输入 HTML 部分时从前端获取位置的简单方法:

<html>
    <head>
       <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
    </head>
    <script>
        function submit(){
            var location = document.getElementById('location').value;
            $.get('/location',{location : location});
        }
    </script>
    <body>
        <input type = 'text' id = 'location' placeholder = 'location'>
        <button onclick = 'submit()'>Submit</button>
    </body>
</html>

烧瓶 API 部分:

@app.route('/location', methods = ['GET','POST'])
def location():
    user_loc = request.args.get('location');
    print(user_loc)

推荐阅读