3

我正在使用tastepie 为我的Django 项目创建一个api。我的项目需要用户登录才能对模型视图等进行编辑。所以我的第一步是通过在 UserResource 中创建登录和注销功能来使用tastepie 登录用户,如此处所述。响应包含我用来注销的 sessionid cookie。我的资源使用 SessionAuthentication 和 DjangoAuthorization。但是当我尝试使用美味的资源 url 在模型上发布、放置或删除时,我收到一个错误 401 错误。有人建议我必须使用有效的 csrf_token。但是,当美味的登录视图不返回时,我该怎么做。示例代码:

class EntryResource(ModelResource):
    customer = fields.ForeignKey(CustomerResourse, 'customer', full=True)
    creator = fields.ForeignKey(UserResource,'creator',null=True,full=True,blank=True)
    class Meta:
        queryset = Entry.objects.all()
        resource_name = 'entry'
        authorization = DjangoAuthorization()
        authentication = SessionAuthentication()

我的客户.py

    headers={"Content-Type":"application/json"}
    #login. I don't get a csrftoken here, but works fine which is odd because i post data r
    resp = requests.post(login_url, data=json.dumps(credentials), headers=headers)
    cookies ={'sessionid':resp.cookies['sessionid']}

    entry = {
        'title':'New Entry',
        'snippet':'New Snippet',
        'created': datetime.datetime.now().strftime('%Y-%m-%dT%H:%M:%S'),
    }
    entry_json = json.dumps(entry)
    entry_add_response = requests.post(entry_api_url,data=entry_json,
                                      headers=headers,cookies=cookies)
    #entry_add_response.status_code is 401

    #logout works as it should
    logout_resp = requests.get(logout_url, cookies=cookies)

我究竟做错了什么?我没有采取正确的步骤吗?我所有的网址都附加了 ?format=json 。试过没有用。我还尝试从 django 和会话身份验证和授权更改为基本(Authentication()、Authorization())。然后我得到一个 500 错误。我开始感到有些绝望了......

4

0 回答 0