小编cko*_*kot的帖子

尽管允许AllowAny权限,django-rest-framework在POST,PUT,DELETE上返回403响应

我正在使用django-oneall来允许我的网站上的社交登录会话身份验证.虽然它不是django-rest-framework的建议auth提供程序之一,但 rest_framework.authentication.SessionAuthentication使用django的默认会话身份验证.所以我认为整合应该相当简单.

在权限方面,最终我将使用IsAdmin,但出于开发目的,我只是将它设置为IsAuthenticated.当返回403s时,我放宽了权限AllowAny,但仍然没有骰子.这是我的休息框架配置:

settings.py

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.SessionAuthentication',
    ),
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.AllowAny',
        # 'rest_framework.permissions.IsAuthenticated',
        # 'rest_framework.permissions.IsAdminUser',
     ),
    'PAGE_SIZE': 100,
    'DEFAULT_FILTER_BACKENDS': (
        'rest_framework.filters.DjangoFilterBackend',
    ),
}
Run Code Online (Sandbox Code Playgroud)

编辑:

我根据下面的答案得到了这个工作.事实证明,rest_framework期望csrftokencookie和aa X-CSRFToken具有相同的值,我设置我的前端代码为所有ajax请求发送该标头,一切正常.

authentication django permissions django-rest-framework

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

寻找可以在字级执行编辑/其他编辑距离的python库

我在 SO/elsewhere 上看到了一堆类似的问题,但没有一个答案能完全满足我的需求,所以我不认为这是一个重复的问题。

此外,我完全知道如何自己实现这一点,但我试图不必重新发明轮子。

有谁知道任何 python 包可以执行 levenshtein/其他编辑距离比较 2 个单词列表(我找到了一些),但也允许指定你自己的插入、删除、替换和换位成本?

基本上,我希望计算的距离是句子中单词的编辑次数,而不是句子不同的字符数。

我正在尝试使用 python2 的 C api 替换实际用 C 编写的自定义 python 扩展模块。我可以用纯 python 或 cython 重写,但我宁愿简单地向项目添加一个依赖项。唯一的问题是这段代码允许你为各种选项指定你自己的成本,到目前为止我还没有找到一个允许这样做的包。

python levenshtein-distance

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

glib gunichar和wchar_t之间有什么区别,哪个更适合跨平台解决方案?

我正在尝试编写一些只有用户可以移植的C代码gcc,并且已glib安装.

从我的所有研究中,我发现gcca,a wchar_t总是定义为4个字节,gliba gunichar也是4个字节.

想到的是,如果像a gunichar,a wchar_t也被编码为UCS4.是这样的吗?如果是这样,我应该能够简单地转换gunichar*为a wchar_t*并使用这些stdc wcs*函数,对吗?

c unicode cross-platform wchar-t glib

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

Rabbitmq-是否在同一频道上消费和发布?

我有两个通过pika连接到Rabbitmq的python进程。每个主题消耗一组主题,另一个主题作为响应发布。一种使用SelectConnection,另一种使用TornadoConnection。

目前,这两个都是测试程序,它们模拟用户与服务器之间的对话,并且每个程序的on_message()都经过简单的硬编码,以分支到接收到的routing_key上,并发布相应的响应。

最初,经过一段随机的时间(通常不超过2分钟),我会收到类似以下的错误消息:

UnexpectedFrame: Basic.publish: (505) UNEXPECTED_FRAME - expected content header for class 60, got non content header frame instead
Run Code Online (Sandbox Code Playgroud)

在搜索了有关堆栈溢出和其他地方的大量文章之后,我逐渐了解到此错误与竞态条件有关,竞态条件是在basic_publish完成之前消耗了一些东西。

我对代码进行了更改,因此,我不进行立即的basic_publish()而是将回调传递给connection.add_timeout(),延迟为1秒。进行此更改后,我可以进行大量运行,其中两个进程之间相互进行“对话”的时间大于1小时,而不会重现错误。

我的问题是,这仅仅是因为我在模拟一个用户而起作用?我需要两个消费和发布渠道吗?

def on_message(self, unused_channel, basic_deliver, properties, body):
    if self._sibling_app_id == properties.app_id:
        self.dispatch_message(basic_deliver, properties, body)


def dispatch_message(self, basic_deliver, properties, body):
    (user_id, msg_type) = basic_deliver.routing_key.rsplit('.', 1)

    if "login-response" == msg_type:
        print body
    elif "gid-assignment" == msg_type:
        print body
    elif "tutor-logout" == msg_type:
        print body
    elif "tutor-turn" == msg_type:
        message = "i don't know"
        routing_key = "%s.input" % user_id
        callback = …
Run Code Online (Sandbox Code Playgroud)

python rabbitmq python-2.7 pika

5
推荐指数
2
解决办法
2975
查看次数

如何禁用将包上传到 PyPi 除非将 --public 传递给上传命令

我正在开发包并将包的开发/测试/等版本上传到本地 devpi 服务器。

为了防止意外上传到PyPi,我采用了以下常见做法:

setup(...,
      classifiers=[
        "Programming Language :: Python",
        "Programming Language :: Python :: 2",
        "Programming Language :: Python :: 2.7",
        "Private :: Do not Upload"
     ],
     ...)
Run Code Online (Sandbox Code Playgroud)

效果很好,但是当我最终准备好将包上传到 PyPi 时呢?

我想出了一个完全丑陋但简单的技巧,它要求我将分类器定义为 setup() 调用之外的全局变量,如下所示:

CLASSIFIERS = [
    "Programming Language :: Python",
    "Programming Language :: Python :: 2",
    "Programming Language :: Python :: 2.7"
]


if "--public" not in sys.argv:
     CLASSIFIERS.append("Private :: Do Not Upload")
else:
     sys.argv.remove("--public")

setup(...
      classifiers=CLASSIFIERS,
      ...)
Run Code Online (Sandbox Code Playgroud)

另一个也许更简单的选择是仅仅注释掉“私人::请勿上传”,但这似乎并不比我的黑客更专业。

我想做的创建一个名为的上传命令的适当子类SafeUpload,并让它检查--publiccmd-line 选项。也许,由于在上传之前可能存在构建,因此SafeBuild …

python setuptools pypi devpi

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