小编ove*_*lii的帖子

Django Rest Framework,ajax POST工作但PATCH抛出CSRF失败:CSRF令牌丢失或不正确

我正在将我的项目移植到Django Rest Framework为我的项目制作一个合适的REST Api,我认为它有助于大量设计API并使其健壮但我遇到了一个问题:

我有一个入门模型和相关的ListCreateAPIViewRetrieveUpdateDestroyAPIView视图.我可以通过ajax请求在列表中成功发布一个新的条目实例,并csrfmiddlewaretoken按照我在常规Django View中的方式提供.

    POST entries/
Run Code Online (Sandbox Code Playgroud)

现在我尝试使用相同的方法将补丁应用于现有实例csrfmiddlewaretoken:

    PATCH entries/3
Run Code Online (Sandbox Code Playgroud)

然后响应状态代码是403 FORBIDDEN错误的,CSRF Failed: CSRF token missing or incorrect尽管我检查csrfmiddlewaretoken了请求数据中的firebux .

我没有错,我无法找到代码中的哪个地方被拒绝了.

注意:我可以使用Django Rest Framework可浏览的api 修补对象.

我希望有人能帮帮忙.谢谢.奥利维尔

编辑

我正在深入研究代码,看看PATCH请求的拒绝发生在哪里,我发现django.middleware.csrt.py如下:

        if csrf_token is None: #<--- csrf_token is defined
            # No CSRF cookie. For POST requests, we insist on a CSRF cookie,
            # and in this way we can avoid all CSRF …
Run Code Online (Sandbox Code Playgroud)

django ajax rest django-rest-framework

10
推荐指数
2
解决办法
3639
查看次数

随机数序列un Haskell和State Monad,我做错了什么?

作为我的Haskell之旅的一部分,我正在实现一个光线跟踪器,我需要能够在代码中的几个位置绘制随机数序列.通常我希望能够为每个像素获得64个样本,并且并行计算像素.

我正在寻找状态monad来实现这一点,我在这个答案的指导下在Haskell中采样随机数的序列,但我写的代码没有终止,它的内存消耗也会爆炸.

这是代码的抽象部分:我跳过能够sampleUniform在代码中调用几次来获取随机数的新列表,但是如果我这样做runhaskell test.hs,它会输出lis的第一个字符,[然后它显然被卡住了无限循环.

module Main (main
            , computeArray) where

import Control.Monad
import Control.Monad.State (State, evalState, get, put)
import System.Random (StdGen, mkStdGen, random)
import Control.Applicative ((<$>))

type Rnd a = State StdGen a

runRandom :: Rnd a -> Int -> a
runRandom action seed = evalState action $ mkStdGen seed

rand :: Rnd Double
rand = do
  gen <- get
  let (r, gen') = random gen
  put gen'
  return r

{- Uniform …
Run Code Online (Sandbox Code Playgroud)

random haskell state-monad

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

Django rest Framework,更改ImageField的文件名

我有一个带有Django Rest Framework的API端点来上传图像.

class MyImageSerializer(serializers.ModelSerializer):
     image = serializers.ImageField(source='image')
Run Code Online (Sandbox Code Playgroud)

我可以上传图像,但它们使用从客户端发送的文件名保存,这可能导致冲突.我想改为使用时间戳文件名将文件上传到我的CDN.

生成文件名不是问题,只是用它保存图像.

谁知道怎么做?谢谢.

django django-rest-framework

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