我收到一个错误:rest_framework.request.WrappedAttributeError:'CSRFCheck'对象没有属性'process_request'

use*_*185 8 python django django-rest-framework

urls.py

from django.conf.urls import url
from django.contrib import admin 
from django.conf import settings 
from django.conf.urls.static import static 
from .views import home 
from posts.views import PostListView 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls),
    url(r'^$', PostListView.as_view(), name='home'), 
    url(r'^post/', include('posts.urls', namespace='post')), 
    url(r'^api/post/', include('posts.api.urls', namespace='post-api')), 
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Run Code Online (Sandbox Code Playgroud)

API/views.py

from rest_framework import generics

from posts.models import Post
from .serializers import PostModelSerializer

class PostListAPIView(generics.ListAPIView):
    serializer_class = PostModelSerializer

    def get_queryset(self):
        return Post.objects.all()
Run Code Online (Sandbox Code Playgroud)

API/serializers.py

from rest_framework import serializers
from posts.models import Post

class PostModelSerializer(serializers.ModelSerializer):
    class Meta:
        model = Post
        field = [
            'user',
            'content'
        ]
Run Code Online (Sandbox Code Playgroud)

API/urls.py

from django.conf.urls import url
# from django.contrib import admin

# from django.conf import settings
# from django.conf.urls.static import static
# from .views import home

from .views import PostListAPIView
from django.views.generic.base import RedirectView


urlpatterns = [
    # url(r'^(?P<pk>\d+)/update/$', PostUpdateView.as_view(), name='update'),
    # url(r'^(?P<pk>\d+)/delete/$', PostDeleteView.as_view(), name='delete'),
    # url(r'^(?P<pk>\d+)/$', PostDetailView.as_view(), name='detail'),
    url(r'^$', PostListAPIView.as_view(), name='list'), #/api/tweet
    # url(r'^$', RedirectView.as_view(url='/')),
    # url(r'^create/$', PostCreateView.as_view(), name='create'),
]
Run Code Online (Sandbox Code Playgroud)

views.py

from django.conf.urls import url, include
from django.contrib import admin

from django.conf import settings
from django.conf.urls.static import static
from .views import home
from posts.views import PostListView


urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', PostListView.as_view(), name='home'),
    url(r'^post/', include('posts.urls',  namespace='post')),
    url(r'^api/post/', include('posts.api.urls',  namespace='post-api')),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Wil*_*ing 25

文档声明Django Rest Framework 可以与Django版本1.11,2.0,2.1一起使用,尽管该process_request()方法CSRFCheck实际上是在Django 1.11.6中引入的.

您正在使用的Django版本(1.10.3)对于您的Django Rest Framework版本来说太旧了.

您应该将Django升级到版本1.11.6或理想情况下更高.

pip install --upgrade django  # Upgrade to the latest Django version
Run Code Online (Sandbox Code Playgroud)

要么

pip install --upgrade django==1.11.6  # Upgrade to version 1.11.6
Run Code Online (Sandbox Code Playgroud)

  • 升级到1.11.16修复了该问题. (5认同)
  • 我在1.11.5上得到了同样的错误. (2认同)