IT 50

CORS(Cross-Origin Resource Sharing)와 Django

CORS란 무엇인가? CORS(Cross-Origin Resource Sharing)란 웹 페이지 상의 제한된 리소스를 최초 자원이 서비스된 도메인 밖의 다른 도메인으로부터 요청할 수 있게 허용하는 구조이다(위키백과). 모노리틱 아키택처의 프로젝트에서는 이를 몰라도 별 문제가 없을 듯하다. 문제 상황은 MSA에서 개발할 때 발생한다(근본적인 문제는 도메인과 포트가 다르기 때문이다. 요즘 MVVM node 프로젝트는 프론트엔드와 백엔드가 셋트로 제공되기 때문에 문제가 되지 않는 것 처럼 보일 뿐이다. 만약 MSA이더라도 한 도메인, 한 포트에서 요청을 받아 내부적으로 알아서 처리하는 구조라면 django와 함께 사용하여도 전혀 문제가 되지 않는다). 프론트엔드앱에서 API백엔드서버(Django rest f..

IT 2019.08.03

React에서 csrf token 사용하기(with Django restframework)

React는 node모듈 위에서 동작하는 프론트엔드 라이브러리이다. Django 등의 API를 끌어다가 웹뷰를 구현할 수 있는데, 구현만 하면 뭐하겠는가. 결국 CRUD 기능은 최소한으로 동작하여야할 것이다. 대부분의 웹 프레임워크에서 csrf 공격을 방어하기 위한 수단이 갖춰져있는데, 이는 Django도 동일하다. Django와 template engin기반의 개발환경이라면, 안에 {% csrftoken %}작성 하나로 이란 코드가 자동으로 생성되지만, React의 장점인 템플릿엔진의 배제가 단점으로 돌아와서 해당 토큰을 컴포넌트화하는 코드를 직접 작성해주어야한다. //csrftoken.js import axios from 'axios'; import React from 'reac..

IT 2019.07.29

PYTHON Django에서 업로드된 Template(.html file)으로 동적 구현

HTML파일(django template 문법 포함)을 업로드하고, 해당 파일을 상황에 맞게 include하여, 렌더링하는 기능을 만들고 있었다. 정말 하루종일 삽질했는데, settings.py 설정을 잘 해주어야 했기 때문.. 그 외에 템플릿에서의 구현도 기존 미디어 파일들과 다르니, 끝까지 읽길 권장한다. 그렇기 때문에 오랜만에 포스트를 남겨본다. 1. settings # settings.py import os BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 여기까지는 djan..

IT 2019.06.05

python의 바둑 패키지를 찾다가..

바둑의 공식 명칭은 GO다. 알파고의 '고'와 같다. 일본이 바둑 보급에 앞장섰기 때문에 围棋(wéiqí)도 바둑(baduk)도 아닌 棋(go)가 됐다. 그래서 pip search go 를 입력하여 설치 가능한 패키지 목록을 훑고 있었는데, 웬걸.. PokemonGO-pokedex - Get Pokemon GO name based on Pokedex number 라는 패키지가 있다.. 설명은 포켓덱스 숫자에 따라 포켓몬 이름을 얻는다니, 포켓몬고 유저를 위한 패키지라 보면 되겠다. 그래서 바둑 패키지는 뭐가 있냐고? szgo dlgo kombilo 등이 있다.

IT 2019.03.28

django admin page에 나타나는 help_text field 응용

django model에 field정의 시, "help_text="이란 옵션을 줄 수 있다.""" 예시 """ class MyModel(models.Model): id = models.CharField(max_length=40, primary_key=True, help_text='아이디를 입력하세요') name = models.CharField(max_length=40) """재밌는 건, 아래와 같이 admin.py에서 설정이 가능한데, 아래 방법을 응용하면 텍스트에 bold()효과를 주는 것도 가능하다는 것.이를 응용하면 이미지 삽입도 가능할 것이라 생각한다."""from mymodel.models import MyModel from django.contrib import admin """ Custom..

IT 2019.02.18

django와 aws elb사용 시 주의해야할 사항

이번 Django 웹 애플리케이션 개발 및 AWS에 배포를 하며 어마 무시하게 많은 지식을 습득하였다. 만 2개월이 넘는 시간동안 삽질을 정말 많이 하였는데, 나와 같은 어려움을 겪는 사람이 없길 바라며 글을 올린다. Django의 경우, sns소셜 로그인 기능 구현이 매우 쉽다. social-auth-app-django라는 패키지를 받은 후, settings.py에 등록해주고, 인터넷보고 따라 만들면 된다. 따라서 social-django의 사용법이나 django, python 등의 내용은 이번 포스트에서 다루지 않을 것이다. 내가 겪은 문제는 크게 두 가지였는데 첫째는 django애플리케이션을 aws에 배포하는 것, 둘째는 배포 이후 facebook api와 같이 https프로토콜 사용을 강제하는 것..

IT 2019.01.23

windows에서 linux server로 파일 보내기, linux server에서 windows로 파일 내려 받기

윈도우에서 파일 업로드 scp -i .pem -r @: # E.g. # scp -i C:\Users\test\test_server.pem -r C:\test\* test_server_user@test.test.com:~/download/ 리눅스에서 파일 다운로드 scp -i .pem -r @: # E.g. # scp -i C:\Users\test\test_server.pem -r test_server_user@test.test.com:/home/test_server_user/test/* c:\test_server_download ※ -r 옵션에 대한 설명 test.txt와 같이 딱 하나의 파일만 보낼 것이라면 -r 옵션 생략이 가능하다. 하지만 배포를 하거나 대량 수정을 하게 되면 많은 파일을 한번에 보..

IT 2019.01.17

django의 model.ImageField를 template안에서 사용하기 전, 셋팅

media루트를 설정해주고, urlpatterns를 추가해주어야함. #이걸 해줘야 imageField의 업로드 파일이 이상한 디렉토리에 저장되지 않는다. 디렉토리는 없다면 자동으로 생성됨. MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media')#이걸 추가해주어야 templates안의 html에서 사용이 가능.#debug모드에서만 사용하는 것이 좋다. 서버가 증설되면, 같은 메모리에서 받아오는 것이 설정면에서나 안정성에서나 메모리 효율면에서나 이득.urlpatterns += staticfiles_urlpatterns() urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDI..

IT 2018.12.15