Python/Django

    [Django] django -mysql 연동

    @@@@ 2020/6/20 aws ec2 ubuntu 18 기준! @@@@2020/10/27 mysqld.cnf 파일수정 추가 외부접속 1. mysql 설치 apt install mysql-server mysql-client // 아마존 리눅스 일경우 (mysql 5.7) -sudo yum install mysql57-server -sudo service mysqld start 2 . 아이디 생성 mysql -u root -p //임시 db 생성 create database django ; //사용자 생성및 '%' 외부권한 접속 허용 grant all privileges on django.* to 사용자이름@'%' identified by '사용자패스워드'; //저장 flush privileges; qu..

    [Django] React -Django cors

    리액트에서 Axios 로 Django(DRF) url 로 값을 받아오려는데 문제가 생겼다. No Access-Control-Allow-Origin' 관련한 오류가 바로 Cross Domain 이슈!!!! 이를 해결하기위해서는 서버에서 접속을 허용한다고 설정을 해줘야한다고 한다! django cors header 라이브러리 설치하자! 먼저 CORS란 뭘까? CORS는 Cross Origin Resource Sharing의 줄임말입니다. 즉, 도메인 주소가 다른 서버에 http request를 전송하는 걸 이야기 합니다. 최신 웹 브라우저들이 보안상의 이유로 외부 Host로 접속하는 것을 차단하는 문제를 해결하기 위해 CORS표준이 제안되었고 요즈음엔 거의 일반화 되었습니다. 아하 ! pip install ..

    [Django] django-debug-toolbar

    https://django-debug-toolbar.readthedocs.io/en/latest/ Django Debug Toolbar — Django Debug Toolbar 3.0a2 documentation © Copyright 2020, Django Debug Toolbar developers and contributors Revision 88759a74. django-debug-toolbar.readthedocs.io 장고 디버깅에 도움을 줄수있는 debug_toolbar 를 사용 하기로했다. 이렇게 편한게 있는지 몰랐네;; Django의 버전부터, cpu, 설정, 헤더, 요청, sql, 정적 파일, 템플릿, 캐시, 신호(signal), 로깅 .. 등등 많다! 다만 주의사항이 1. 템플릿에 반드..

    [Django] Static , Media

    static 파일 -다른 프레임워크에서도 비슷한 개념으로 쓰임 -개발 리소스로서의 정적인파일 (js,css,image ...) 개발자를 위한 파일 -앱 , 프로젝트단위로 저장 , 서빙 media 파일 -장고에만 존재 -File/Image Field 를 통해 저장한 모든파일 -DB 필드에는 저장경로를 저장하며 , 파일은 파일 스토리지에 저장 -프로젝트 단위로 저장 ,서빙 Medai 파일 처리순서 1. HttpRequest.FILES 를 통해 파일이 전달. 2. view or form 로직을 통해 , 유효성 검증을 수행 3. FIle/ Image Field 에 경로 를 저장 4. setting.py 에서 MEDIA_ROOT 경로에 파일을 저장 setting.py MEDIA_URL = '/media/' MED..

    [Django] DRF 로그인, 회원가입 [미완]

    로그인 관리를 위해 Django-rest-auth 를 사용한다. 1. pip install django-rest-auth 2. setting.py 에 추가 'rest_auth' token authentication을 통해 구현하기로했다. .. JWT로 구현하기 로 결정했다. 로그인 로그아웃 과정 1. 화면에서 사용자가 email, password를 입력을 한다. 2. 사용자가 입력한 email, password 를 서버로 보낸다. 3. Email, password 가 맞다면 고유한 TOKEN을 발행한다. 4. 발행된 토큰을 response로 보낸다 (front) 5. 토큰을 클라이언트 어딘가에 저장해 놓는다. (cookie or session) 6. 다른 API를 사용할 때마다 header에 TOKEN을..

    [Django] Django RestFramework (DRF)

    지금마음이 급해서.. 중요한것만 정리 1. pip install djangorestframework 설치후 setting.py INSTALLED_APPS에 'rest_framework ' 를 추가해준다 모델생성후 . 2 . serializers.py 작성 # Serializer는 말 그대로 직렬화하는 클래스로서 사용자의 DB안에 # 사용자 프로필 사진, 이메일, 이름, 성별이 있다고 가정하면, # 사용자 모델 인스턴스를 JSON형태 혹은 Dictionary형태로 직렬화 할 수 있다.

    [Django] WSGI 란?

    nginx 에 연결할때보면 wsgi 라는 걸 자주 볼수있다. 단순히 파이썬이 웹서버와 통신하기위한 것 이라고만 알고있는데 자세히 알아보기로했다. 개요 일반적으로 웹서버(Apache,Nginx 등) 은 Tomcat,Php, Node, 등의 앞단에 배치되어 프록시,보안,정적파일 제공, 등의 역할을 한다. 하지만 웹서버는 php, python , java 등의 언어를 해석할 능력이 없기때문에 프로그래밍 언어를 해석할수있는 인터페이스, 즉 CGI가 필요하다. WSGI는 python 애플리케이션과 웹 서버가 통신하기위해 정의된 표준 인터페이스 스펙이다. CGI와 WSGI는 웹 요청을 처리 할 수있는 인터페이스라는 점에서는 같지만, CGI 는 WSGI 보다 low level에 있다 Django에서 프로젝트를 생성하..

    [Django] django-dotenv

    프로젝트폴더에 .env 파일을 만들고 변수들을 지정할수있다. 이렇게 하면 보호가 필요한 소셜로그인 key값이나 다른 API key값, DB , 메일서버등 등을 숨기고 사용할수있게된다. 1. 설치 pip install django-dotenv 2.manage.py import dotenv # 추가 if __name__ == '__main__': dotenv.read_dotenv() # 추가 main() main() 함수가 출력되기전에 값을 불러온다. 3. 불러오기 os.environ.get("변수") 형태로 사용 ex) app_key = os.environ.get("KAKAO") 끗 DB 유저이름이나 비밀번호에도 적용해야징

    [Django] Forms API

    Django Forms API: python 파일을 만들면 django가 labels , value, placeholder, selected .. checked ... 등등을 알아서 처리해준다. model과 비슷하다 난 forms.py를 만들어서 지정해주었다. forms.py # improt django forms from django import forms name = forms.CharField() # ModelChocie 는 반드시 쿼리셋을 적어줘야한다 type = forms.ModelChoiceField(queryset) views.py print(form) form 으로 값들을 가져왔지만 html 테그도 몽땅 출력하는걸 볼수있다! 선택한 옵션만 가져오려면. form 에서 cleaned_data ..

    [Django] Nginx- Gunicorn 삽질

    ubuntu Nginx-Gunicorn-Django 구동 확인 후 .. 백앤드(admin) 개발도중 문제가 두가지 발생했다. 1. Django에서 코드를 바꾸면 바로 admin에 반영이 안된다. (runserver 로 돌리면 바로 반영되어있음) 2. 반영이 되고 나서 웹상에서 새로고침을 누르면 오류 , 정상 이 반복된다. Nginx가 문제라고 생각해서 껏다 켜봐도 안되고 Django쪽도 일부러 설정도 건드려봐도 안됬다. 설마하니 Gunicorn 문제일까 싶어서 껏다 키니까 오류가 해결됨 .. 구글링해서 한블로그를 참고 했더니 Django 내부 파일을 수정했을경우 , Gunicorn을 재시작해야한다고 한다..... 재시작방법은 sudo systemctl daemon-reload sudo service gu..