小编Chi*_*fir的帖子

如何将 Flask 路由中的 PATCH 方法作为 API 处理?

我有这条路线:

@bp.route('coordinates/<int:id>/update', methods=['PATCH'])
def update_coordinates(id):
    schema = CoordinatesSchema()
    coords = Coordinates.query.get_or_404(id)
    new_data = request                           #????

    # some another logic
    return jsonify({"result": "GOOD"}), 200
Run Code Online (Sandbox Code Playgroud)

我正在传递一个要在正文中更新的数据,例如字典:{ "title": "newtitle"}但是我如何在路线内获取此信息?

python api flask

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

python 的 dict .get() 方法如何检查默认参数?

我遇到了一种奇怪的 Python 行为,很难向自己解释。当我传递一个默认值以从字典中获取键时 - 看起来它首先尝试找到该默认值,然后查看键是否存在。如果字典中存在该键,则会抛出错误。为什么会发生这种情况?

from collections import namedtuple
Test = namedtuple("TEST", "attr1 attr2 attr3")
obj_1 = Test("first", "second", "third")

obj_1.attr1
>>> 'first'
k_dict = {"red": "light", "green": "leaf"}    

k_dict.get("red")
>>> 'light'

k_dict.get("red", obj_1.attr4)

Traceback (most recent call last):
  File "<input>", line 1, in <module>
AttributeError: 'TEST' object has no attribute 'attr4'
Run Code Online (Sandbox Code Playgroud)

更新:我明白这里的问题是什么,但我不明白为什么这是Python的默认行为?为什么不只检查第一部分 - 如果它key在字典中,如果不在 - 检查另一部分?现在看起来这不是最佳的计算方式?

python

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

如何处理 Django 中间件中的异常?

我在正确处理 Django 中间件中的异常时遇到问题。我的例外:

from rest_framework.exceptions import APIException
from rest_framework.status import HTTP_403_FORBIDDEN
class MyProfileAuthorizationError(APIException):    
    def __init__(self, msg):
        APIException.__init__(self, msg)
        self.status_code = HTTP_403_FORBIDDEN
        self.message = msg
Run Code Online (Sandbox Code Playgroud)

还有我的中间件:

class PatchRequestUserWithProfile:
def __init__(self, get_response):
    self.get_response = get_response

def __call__(self, request, *args, **kwargs):
    patch_request_for_nonanon_user(request)
    if not request.user.profile:
        raise MyProfileAuthorizationError("You are not allowed to use this profile.")

    response = self.get_response(request)
    return response
Run Code Online (Sandbox Code Playgroud)

这个异常抛出 500 而不是 403。我该如何解决?

python django middleware django-rest-framework

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

Python:如何通过子字符串相关性对字符串列表进行排序?

我有一些字符串列表,例如:

["foo bar SOME baz TEXT bob",
"SOME foo bar baz bob TEXT",
"SOME foo TEXT",
"foo bar SOME TEXT baz",     
"SOME TEXT"]
Run Code Online (Sandbox Code Playgroud)

我希望它按精确度排序到SOME TEXT子串(大写无关紧要).像这样的顺序:

["SOME TEXT",
"foo bar SOME TEXT baz",
"SOME foo TEXT",
"foo bar SOME baz TEXT bob",
"SOME foo bar baz bob TEXT"]
Run Code Online (Sandbox Code Playgroud)

这个想法是 - 最好的分数得到与子串字位置最匹配的字符串.对于子串的单词之间更大量的"草率"单词 - 它得到的排序越低.

我找到了一些像fuzzysetLevenshtein距离的库,但我不确定这是我需要的.根据我的理解,我知道我要排序的确切子字符串和那些libs搜索相似的单词.

实际上我需要在我的Django项目中进行一些数据库查询(Postgresql)之后进行此类操作.我已经尝试使用其ORM进行全文搜索,但没有得到相关的排序顺序(它不计算子字符串单词之间的距离).接下来我尝试过Haystack + Whoosh,但此刻也没有找到信息如何在那里做到这一点.所以现在的想法是获取查询集,然后将其排序出数据库(是的,我知道这可能是一个糟糕的决定,但是现在我希望它只是工作).但是,如果有人告诉我如何在任何技术中做到这一点,我在这里提到 - 这也将是非常酷.谢谢!

ps子串的长度应该是最多20个字符串中的2-10个字.

python sorting

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