标签: flask-restful

TypeError: key <built-in function id> is not a string

我正在使用flask 及其flask-restful 扩展来制作一个简单的restful-api。我无法使用用户 ID(参考)将数据填充到问题表中。

model.py 文件如下:

class User(UserMixin, SurrogatePK, Model):

    __tablename__ = 'users'
    username = Column(db.String(80), unique=True, nullable=False)
    email = Column(db.String(80), unique=True, nullable=False)
    #: The hashed password
    password = Column(db.String(128), nullable=True)
    created_at = Column(db.DateTime, nullable=False, default=dt.datetime.utcnow)

    def __init__(self, username, email, password=None, **kwargs):
        db.Model.__init__(self, username=username, email=email, **kwargs)
        if password:
            self.set_password(password)
        else:
            self.password = None

    def set_password(self, password):
        self.password = bcrypt.generate_password_hash(password)

    def check_password(self, value):
        return bcrypt.check_password_hash(self.password, value)

    def generate_auth_token(self, expiration = 600):
        s = Serializer('secret_key', expires_in = expiration)
        return s.dumps({ 'id': self.id …
Run Code Online (Sandbox Code Playgroud)

python flask flask-sqlalchemy flask-restful

0
推荐指数
1
解决办法
7212
查看次数

启用身份验证时 Flask-restful 应用程序失败

每当我尝试使用flask_httpauth 为我的flask_restful 项目启用身份验证时,我都会收到此错误:

AttributeError: 'function' object has no attribute 'as_view'
Run Code Online (Sandbox Code Playgroud)

这是一个非常基本的示例:apicontroller.py:

from flask_restful import Resource, Api
from flasktest import api, app
from flask_httpauth import HTTPTokenAuth

auth = HTTPTokenAuth()

@auth.login_required
class ApiController(Resource):
    def get(self):
        return True

api.add_resource(ApiController, '/api/apicontroller')
Run Code Online (Sandbox Code Playgroud)

初始化.py:

from flask import render_template
from flask import Flask, request, render_template, session, flash, redirect, url_for, jsonify
from flask_restful import Resource, Api, reqparse, fields
from flask_httpauth import HTTPTokenAuth


app = Flask(__name__)

api = Api(app)

import flasktest.apicontroller
Run Code Online (Sandbox Code Playgroud)

每当我用 装饰控制器类时@auth.login_required,它都会失败并出现上述错误。我怎样才能解决这个问题?

python flask-restful flask-httpauth

0
推荐指数
1
解决办法
1383
查看次数

在Flask装饰器函数中获取IP地址和端口

如何在 Flask 的装饰器函数中获取发送请求的客户端的 IP 地址和端口?

from flask import Flask, request, jsonify
from functools import wraps
app = Flask(__name__)

def check_auth(f):
    @wraps(f)
    def decorated_function(*args, **kwargs):
        print(request)
        ###  Here I need the IP address and port of the client
        return f(*args, **kwargs)
    return decorated_function

@app.route('/test', methods=['POST'])
@check_auth
def hello():
    json = request.json
    json['nm'] = 'new name2'
    jsonStr = jsonify(json)
    return jsonStr
Run Code Online (Sandbox Code Playgroud)

python flask python-3.x flask-restful

0
推荐指数
1
解决办法
3280
查看次数

_schema 上的 Marsmhallow ValidationError - 无效的输入类型

我一直试图找出导致此输入类型错误的原因,但似乎无法弄清楚。

模型/pin.py

from sqlalchemy import Column, String


class Pin(db.Model):
    __tablename__ = 'pin'

    pin = Column(String, primary_key=True)
Run Code Online (Sandbox Code Playgroud)

模式/pin.py

from ..models.pin import Pin
from marshmallow import fields, validate


class PinSchema(ma.Schema):
    pin = fields.Str(required=True, validate=[validate.Length(5)])

    class Meta:
        model = Pin
        fields = ('pin')

pin_schema = PinSchema()
Run Code Online (Sandbox Code Playgroud)

资源/pin.py

from flask_restful import Resource
from flask import request
from ..schemas.pin import pin_schema


class PinResource(Resource):

    """
        Update current pin
        Expecting:
        {
            'pin': 'current_pin'
            'new_pin': 'new_pin'
        }
    """
    def patch(self):
        
        data = request.get_json()
        
        errors = pin_schema.validate(data['new_pin'])

        if errors: …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy flask flask-restful marshmallow

0
推荐指数
1
解决办法
4649
查看次数

无法从远程计算机访问Python Flask应用程序

大家好我是Python Flask的新手。阅读完基本手册后,我尝试创建一个示例Flask应用程序,并在我的机器上成功完成了该工作。

我的代码(取自各种教程)如下:

from flask import Flask

app = Flask(__name__)

@app.route("/")
def main():
    return "Welcome!"

if __name__ == "__main__":
    app.run()
Run Code Online (Sandbox Code Playgroud)

如您所知,此应用程序将打印“ Welcome!”。每当我点击http://127.0.0.1:5000/。但是,当我尝试通过使用系统的IP地址替换127.0.0.1从同一网络中的其他计算机访问应用程序时,出现“网络错误(tcp_error)连接被拒绝”错误

关于如何从另一台计算机访问Flask应用程序(在一台计算机上创建)的任何输入都将有所帮助

flask python-3.x flask-restful

-2
推荐指数
1
解决办法
3651
查看次数