1. 创建纯净版DRF项目
目录
Django Rest-Framework 创建纯净版项目
1. 创建项目
1.1 创建Pure Python Project

1.2 安装django/启动项目/安装DRF
pip3 install django==3.2
django-admin startproject day13 .
django-admin startproject day13 .
python manage.py startapp api
pip3 install djangorestframework==3.13.1
2.基础配置(纯净版)
2.2 settings.py
#注释掉不需要用的app
INSTALLED_APPS = [
    # 'django.contrib.admin',
    # 'django.contrib.auth',
    # 'django.contrib.contenttypes',
    # 'django.contrib.sessions',
    # 'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
]
#注释掉不需要用的中间件
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    # 'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    # 'django.contrib.auth.middleware.AuthenticationMiddleware',
    # 'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
2.3 配置试图
from django.shortcuts import render,HttpResponse
from rest_framework.request import Request
# Create your views here.
def home(request):
    return HttpResponse("Welcome home!")
from rest_framework.views import APIView
from rest_framework.response import Response
class UserView(APIView):
    def get(self, request):
        return Response("返回成功")
2.4 配置路由
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
from api import views
urlpatterns = [
    # path('admin/', admin.site.urls),
    path('home/', views.home),
    path('user/', views.UserView.as_view()),
]
2.5 启动django发现报错

问题原因
from rest_framework.request import Request
在DRF的Request中会进行 request.user request.auth验证
    def _not_authenticated(self):
        """
        Set authenticator, user & authtoken representing an unauthenticated request.
        Defaults are None, AnonymousUser & None.
        """
        self._authenticator = None
        if api_settings.UNAUTHENTICATED_USER:
            self.user = api_settings.UNAUTHENTICATED_USER()
        else:
            self.user = None
        if api_settings.UNAUTHENTICATED_TOKEN:
            self.auth = api_settings.UNAUTHENTICATED_TOKEN()
        else:
            self.auth = None
        # if api_settings.UNAUTHENTICATED_USER:
        #    self.user = api_settings.UNAUTHENTICATED_USER()
        # 判断 api_settings.UNAUTHENTICATED_USER为真时会设置
        # 进入 api_settings查看如何设置
2.5.1 设置api_settings
api_settings = APISettings(None, DEFAULTS, IMPORT_STRINGS)
def reload_api_settings(*args, **kwargs):
    setting = kwargs['setting']
    if setting == 'REST_FRAMEWORK':
        api_settings.reload()
# setting = kwargs['setting']
  # if setting == 'REST_FRAMEWORK':
  # 这两句会判断settings.py中是否含有键为REST_FRAMEWORK的字典
# 那么需要在settings.py中添加, 报错就会消失
REST_FRAMEWORK = {
    'UNAUTHENTICATED_USER': None
}


 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号