+-
python – 使用chrome POSTMAN测试http POST时,它在django中不起作用
我使用Django 1.9.7& Python 3.5

我实现创建用户机制并尝试使用POSTMAN(chrome应用程序)进行测试,但它不起作用,它显示类似于下面的内容:

Forbidden (CSRF cookie not set.): /timeline/user/create/

这是代码:

urls.py

from django.conf.urls import url
From. import views

app_name = 'timeline'
urlpatterns = [
    # ex) /
    url(r'^$', views.timeline_view, name='timeline_view'),

    # ex) /user/create
    url(r'^user/(?P<method>create)/$', views.user_view, name='user_view'),
]

views.py

from django.contrib.auth import authenticate, login, logout
from django.shortcuts import render, HttpResponse

from timeline.models import *


def timeline_view(request):
    return HttpResponse('hello world')


def user_view(request, method):
    if method == 'create' and request.method == 'POST':
        print("hi")
        username = request.POST.get('username')
        username = request.POST.get('username')
        user = User.objects.create_user(username, password=password)
        user.first_name = request.POST.get('name','')
        user.save()
        profile = UserProfile()
        profile.user = user
        profile.save()
        return HttpResponse('create success')
    else:
        return HttpResponse('bad request', status=400)

邮递员:
enter image description here

我尝试了Django CSRF Cookie Not Set,但我认为这篇文章是针对过去的版本.

最佳答案
为了测试,我使用了@csrf_exempt装饰器.

from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def user_view(request, method):
    ...

现在你应该能够在没有csrf cookie的情况下调用这个函数.

(上次我尝试过,我使用的是django 1.8.7)

资源:
https://docs.djangoproject.com/en/1.9/ref/csrf/#edge-cases

点击查看更多相关文章

转载注明原文:python – 使用chrome POSTMAN测试http POST时,它在django中不起作用 - 乐贴网