[Django]张琳制作RESTAPIシャベル1弾


興奮した瞬間にN時間後に出てきたシャベルの成果を見てみましょう.

1.取り付け~!


必要なパッケージのインストール
pip3 install django-rest-auth 
pip3 install django-allauth 
pip3 install django-rest-framework 
pip3 install django-cors-headers 
pip3 install djangorestframework-jwt
**修正**
djangostrestframework-jwtは、最新バージョンのライブラリを使用しているため、エラーが発生しました.後で...これは長い間かき回していたので
安心して「djangorestframework-simplejwt」にインストールし、将来的にもお勧めします.pip3 install djangorestframework-simplejwt

2.追加-!


チャンゴに前にインストールしたパッケージを使うと伝えてください.
「INSTALLED APPS」と「MIDDLEWARE」を変更します.
#settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    
    'django.contrib.sites',
    'rest_auth',
    'rest_auth.registration',

    'allauth',

    'rest_framework',
    'rest_framework.authtoken',
    'corsheaders',

    'webtoons',
]


MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware',
   .
   .
   .
]

3.CORSの設定

  • django-cors-headersネクタイ
  • DRF(Django Rest Framework) and Vue.js - RyanKim
  • 長高COSクロスドメインホットスポット
  • settings.pyにcors関連設定を追加します.
    #settings.py
    #cors관련 셋팅
    from corsheaders.defaults import default_methods
    
    CORS_ORIGIN_ALLOW_ALL = False
    CORS_ORIGIN_WHITELIST = [
        "http://127.0.0.1:8000",
        "http://localhost:8000",
    ]
    CORS_ALLOW_METHODS = list(default_methods) + [
        "",
    ]
    
    CORS_ALLOW_HEADERS = (
        'accept',
        'accept-encoding',
        'authorization',
        'access-control-request-method',
        'access-control-request-headers',
        'content-type',
        'dnt',
        'origin',
        'user-agent',
        'x-csrftoken',
        'x-requested-with',
    )

    4.JWTの設定


    settings.pyに追加
  • JWTをドラムに使用(django):設定ごとに詳しく説明しすぎ、、、親切、、
  • REST_FRAMEWORK = {
        # 'DEFAULT_PERMISSION_CLASSES': ( #로그인여부확인, 유효한 유저만 접근가능하도록 설정
        #     'rest_framework.permissions.IsAuthenticated',
        # ),
        'DEFAULT_AUTHENTICATION_CLASSES': ( #인증방식클래스설정
            'rest_framework_simplejwt.authentication.JWTAuthentication',
            'rest_framework.authentication.SessionAuthentication',
            'rest_framework.authentication.BasicAuthentication',
        ),
    }
    SITE_ID = 1 #Admin 페이지 관리번호 로 단일한 서버는 1번
    
    REST_USE_JWT = True
    
    AUTH_USER_MODEL = 'users.User'
    JWT_AUTH = {
        'JWT_SECRET_KEY': os.environ.get('SECRET_KEY2'),
        'JWT_ALGORITHM': 'HS256',
        'JWT_ALLOW_REFRESH': True,
        'JWT_EXPIRATION_DELTA': datetime.timedelta(hours=6),
        'JWT_REFRESH_EXPIRATION_DELTA': datetime.timedelta(days=7),
    }
  • SITE_ID : 'django.contrib.「sites」がアプリケーションに追加され、adminページ番号が表示されます.
  • 「DEFAULT PERMISSION CLASSES」:defaultに設定されている場合、API要求にトークンがないことはできません.アプリケーションの設定に従って、コメントをしたいです.
  • JWT AUTH:JWTタグ関連設定.貨幣維持時間は6時間、7日後無条件で貨幣が期限切れ