小编smi*_*thy的帖子

在POST到Django REST框架时,为什么我会"设置CSRF cookie"?

当我尝试使用Django REST框架POST到一个简单的测试应用程序时,我收到错误"CSRF cookie not set".我已经尝试过Django 1.4和Django 1.6.2.我正在使用Django REST框架v 2.3.13.

我试过使用@csrf_exempt装饰器,但它没有帮助.

这是一个非常简单的应用程序,没有用户注册/登录等.

有什么想法我收到这个错误?

更新:我已经更新了我的urls.py,如下所示,它现在正在工作!

这是我的代码:

urls.py

from django.conf.urls import patterns, url

from quickstart import views

urlpatterns = patterns('',
    url(r'^api_add/$', views.api_add, name='api_add'),
)
Run Code Online (Sandbox Code Playgroud)

views.py

from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response

@api_view(['POST'])
def api_add(request):
    return Response({"test": 'abc'})
Run Code Online (Sandbox Code Playgroud)

settings.py

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',                                               
    'rest_framework',
)
Run Code Online (Sandbox Code Playgroud)

post.sh

curl -X POST -H "Content-Type: application/json" -d '
{
    "name": "Manager",
    "description": "someone who manages" …
Run Code Online (Sandbox Code Playgroud)

django django-rest-framework

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

Mixin类是抽象基类吗?

Mixin类是抽象基类吗?在下面的示例中,对test_base的调用将失败,因为python无法解析self.assertEqual.

另外,PyCharm是不正确的,因为下面的标记Mixin类具有未解决的属性错误?

class TestConverterMixin(object):
    def setUp(self):
        self.alt_hasher = getattr(hash, self.converter.__class__.__name__)

    def test_base(self):
        with self.settings(PASSWORD_HASHERS=[self.hasher, ]):
            load_hashers(settings.PASSWORD_HASHERS)

            for password in PASSWORDS:
                orig = self.alt_hasher.encrypt(password)
                conv = self.converter.from_orig(orig)

                # see if we get a working hash:
                self.assertTrue(check_password(password, conv))

                # convert back and test with passlib:
                back = self.converter.to_orig(conv)
                self.assertEqual(orig, back)
Run Code Online (Sandbox Code Playgroud)

python pycharm

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

从两个列表创建嵌套列表

我有两个这样的列表:

t = [1,2,3,4]
f = ['apples', 'oranges','grapes','pears']
Run Code Online (Sandbox Code Playgroud)

我需要创建一个这样的列表列表:

data =  [
        ['Fruit', 'Total'],
        ['apples', 1],
        ['oranges', 2],
        ['grapes', 3],
        ['pears' 4]
    ]
Run Code Online (Sandbox Code Playgroud)

我这样做了:

l = []
l.append(['Fruit', 'Total'])
# I guess I should have check that lists are the same size?
for i, fruit in enumerate(f):
    l.append([fruit, t[i]])
Run Code Online (Sandbox Code Playgroud)

只是想知道是否有更多的Pythonic方式.

python

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

如果测试失败,则显示实际值

说我有这样的测试:

self.assertTrue( car.color == 'blue') 
Run Code Online (Sandbox Code Playgroud)

我用它来运行它

nosetests test_car.py -x -v --stop
Run Code Online (Sandbox Code Playgroud)

如果失败了,我希望打印出car.color的实际值.有没有办法做到这一点?

python python-unittest

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