Django
-
Django 이메일 인증으로 비밀번호 찾기 기능 구현(SMTP)Django 2022. 4. 7. 15:11
일단 아래와 같은 순서로 구현한다. 1. 이메일로 보내는 랜덤 코드 만들기 2. Django EmailMessage 모듈을 이용하여 랜덤 코드 Message 보내기 (user DB에 같은 코드를 보낸다.) 3. 랜덤 코드 확인하기 4. 비밀번호 변경하기 settings.py SMTP를 사용하기위해 settings.py 맨 밑에 아래 코드를 추가해준다. SMTP에 관한 내용은 따로 알아보는 것을 추천한다. 그리고 SMTP를 사용하기 위해서 아래 링크에 접속하여 보안 수준이 낮은 앱 허용: 사용을 활성화 시킨다. https://myaccount.google.com/lesssecureapps EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAI..
-
기본 장고에서 JWT를 활용한 로그인 구현Django 2022. 3. 27. 14:23
오늘은 기본 장고에서 기존 csrf 세션 방식이 아닌 JWT를 활용하여 로그인을 구현해보려고 한다. 일단 간단하게 구현 방식을 설명하자면 1. 사용자가 로그인을 하게되면 서버에서 사용자를 확인 후 Access Token 발급 2. 발급된 토큰을 cookie에 저장 3. 사용자가 데이터 요청시 Access Token을 보냄 4. 서버에서 Access Token을 검증 후 응답 1. package install PyJWT 와 django-dotenv를 insall 해준다. 2. 프로젝트 폴더에 .env 파일을 생성한다. SECRET_KEY= (secret_key) JWT_ALGORITHM="HS256" secret_key는 프로젝트를 생성하면 settings.py에 발급되는SECRET_KEY이다. 또한 c..
-
Django ninja JWT를 활용하여 로그인 구현Django 2022. 3. 14. 19:17
Django ninja로 JWT를 구현하는 것은 쉽지가 않았다. 일단 레퍼런스가 많지 않을뿐더러 공식홈페이지를 보고 해보려 했지만 JWT와 관련해서는 친절하게 알려주지 않는다. 어렵게 구글링하고 공식홈페이지에 있는 코드를 접목시켜 header에 token을 저장하는 방법은 성공했지만 cookie에 저장하는 것은 아직 오류가 있다. 그래도 내가 시도한 곳 까지 블로그에 써보려한다. 일단 먼저 django-ninja-jwt 를 install 해준다. 여기에서는 poetry를 사용하기 떄문에 poetry add django-ninja-jwt 를 프로젝트 터미널 내에 입력해준다. 스키마 from ninja import Schema class TokenSchema(Schema): access: str router..
-
Django allauth Google Login page가 바로 안보일 때Django 2022. 2. 26. 23:49
allauth를 사용하여 google 로그인을 구현하고 로그인 버튼을 누르면 아래와 같은 페이지로 이동하는 경우가 있다. 원인은 버전 문제이다. 버전을 업데이트 하면 문제를 해결할 수 있다. 해결방법 pip uninstall django-allauth-> 기존의 allauth 패키지를 삭제한다. pip install django-allauth==0.45 -> 0.45 버전으로 다시 인스톨 한다. python manage.py makemigrations pytthon manage.py migrate -> 그리고 다시 migrate 해준다. 위 코드가 실행 되면 google login page로 바로 들어갈 수 있다.
-
Django Unit Test in VSCodeDjango 2022. 2. 20. 16:47
STEP 1 1. 왼쪽 탭에서 플라스크(Testing) 아이콘을 클릭한다. 2. Configure Python Tests를 클릭한다. STEP 2 1. unittest를 선택한다. 2. test 파일이 있는 경로를 설정 해준다. 3. test 파일 형식을 지정해 준다. 나의 파일명은 'test_...' 이여서 test*.py를 해주겠다. STEP 3 1. 위와 같이 설정을 마치면 .vscode/settings.json 파일이 생성된다. 2. myapp/tests/__init__.py 안에 밑에 코드를 작성한다. config는 project안에 settings.py가 있는 폴더이다. 3. 기존에 있던 tests.py를 제거 해야한다 4. config/settings.py 안에 ALLOWED_HOSTS에 "..
-
Poetry 와 packageDjango 2022. 2. 20. 14:45
Poetry 매 번 pip freeze 할 필요 없이, 알아서 poetry.lock 으로 종속성을 관리해 준다. 또한 pyproject.toml 로 여러 가지 설정들이 하나의 파일로 통합되어서 프로젝트 관리하는 것을 도와준다. Poetry 설치 curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python - 패키지 설치 Black black은 code formatter 이다. 우리가 작성한 코드를 blakc 코드 스타일에 맞게 자동 수정해준다. black 설치 : poetry add black black 실행 : poetry run black . black 설정 : pyproject.toml에..
-
Django TipDjango 2022. 2. 20. 01:21
라우팅 사용자가 접속한 각각의 경로를 누가 처리할 것인가를 지정하는 것 장고에서는 project 폴더 안에 있는 urls.py 가 가장 큰 틀의 라우팅이고 그리고 적당한 app으로 위임을 해주면 그 app이 view안에 있는 특정 함수로 위임을 해서 그 함수가 이 작업을 처리한다. csrf token {% csrf_token %} 데이터를 post 방식으로 보낼 때 보안을 위한 기능 session 사용자 정보를 저장하는 공간 AbstractUser project/user/models.py 안에 from django.contrib.auth.models import AbstractUser -> 장고에서 제공하는 기본 유저 모델을 사용할 것이다. class UserModel(AbstractUser): cl..
-
django basicDjango 2022. 2. 20. 00:31
django의 기본 원리 ex) user app model 생성 후 migration, migrate -> admin에 model추가 -> template/html -> user/view.py -> user/urls.py -> 프로젝트 urls에 user/urls 추가 (path("", include('user.urls')),) 사용자(관리자) 생성 python manage.py createsuperuser User/admin.py 에서 UserModel을 admin에 추가해주어야 한다. GET / POST GET : 우리가 데이터를 보게되는 부분 POST : 우리가 작성을 한 후에 버튼을 눌러서 보내는 것 같은 url이더라도 GET과 POST에 따라서 다른 기능을 할 수 있다. Many to Many..