Sangjun 개발 블로그
    • 카테고리
    • Algorithm
    • apple
    • AWS
    • boto3
    • cron
    • crontab
    • DB
    • Django
    • Docker
    • facebook
    • fcm
    • Go
    • google
    • Gopacket
    • Gui
    • Guide
    • kakao
    • Learning
    • LeetCode
    • Linux
    • logging
    • mariaDB
    • Models
    • MSSQL
    • naver
    • NFS
    • Numpy
    • oauth
    • Opencv
    • PostgreDB
    • pytest
    • Python
    • Sniff
    • Swagger
    • Windows
    • Windows10
    • WSL
    Hero Image
    Django 파일 다운로드

    django에서 구현가능한 파일 다운로드 방법 예시 로컬파일 다운로드 - Blob 장점 브라우저에서 파일다운로드 완료시점을 알 수 있음 임시로 생성된 파일을 다운받을 경우 완료시점에 따른 파일 삭제가 가능함 단점 파일 용량만큼 브라우저 메모리 사용 대용량 파일다운로드에 부적합 from django.http import FileResponse from rest_framework.views import APIView import os class DownloadView(APIView): def get(self, request): ... file_handle = open(filepath, 'rb') response = FileResponse(file_handle, content_type='application/zip') response['Content-Length'] = os.path.getsize(filepath) response['Content-Disposition'] = 'attachment; filename="%s"' % os.path.basename(filepath) return response 로컬파일 다운로드 - URL 장점

    February 5, 2022 Read
    Hero Image
    Django 소셜로그인(oauth) facebook 연동

    django restframework 기반의 페이스북(facebook) 인증 로그인 백엔드서버로 별도의 auth관련 라이브러리는 설치하지 않고 구현한다. 페이스북 개발자 사이트에서 사용하는 환경변수들이 등록되어있다는 가정하에 진행한다. 페이스북의 경우 다른 소셜로그인과는 용어나 흐름이 달라 추가로 설명하고 시작한다. 1. 페이스북 auth 용어 및 각 페이지 설명 1.1. Graph API 용어 Graph API는 Facebook 플랫폼에서 데이터를 요청 및 응답받는 기본적인 수단이다. 프로그래밍 방식으로 데이터 쿼리, 새 스토리 게시, 광고 관리, 사진 업로드를 비롯한 다양한 작업을 수행할 수 있는 HTTP 기반 API이다.

    January 7, 2022 Read
    Hero Image
    Django 소셜로그인(oauth) apple 연동

    django restframework 기반의 애플(apple) 인증 로그인 백엔드서버로 별도의 auth관련 라이브러리는 설치하지 않고 구현한다. 애플 개발자 사이트에서 사용하는 환경변수들이 등록되어있다는 가정하에 진행한다. 1. 라이브러리 설치 $ pip install django # restframework $ pip install djangorestframework $ pip install djangorestframework-simplejwt # pyjwt[crypto] $ pip install pyjwt[crypto] 2. Apple 로그인 변수 설정 import os APPLE_CONFIG = { "APPLE_TEAM_ID": TEAM_ID, "APPLE_CLIENT_ID": 모바일 로그인시 Bundle ID or 웹 로그인시 Service ID, "APPLE_REDIRECT_URI": "https://domain/REDIRECT_URI", "APPLE_KEY_ID": KEY_ID, "APPLE_KEY_PATH": ".

    December 28, 2021 Read
    Hero Image
    Django crontab 라이브러리 사용법

    django-crontab 라이브러리는 OS의 cron/crontab 서비스를 사용하는것으로 해당 서비스 설치가 되지 않았다면 별도로 설치를 해야함. windows 환경에서는 docker를 설치하여 진행 1. 라이브러리 설치 $ pip install django-crontab 2. django 설정 임의의 app 디렉터리내 cron.py 생성 아래의 함수를 작성한다. 반복 실행할 임의의 함수 선언 def hello_every_minute(): print("hello world") settings.py django_crontab 앱 추가 INSTALLED_APPS = [ 'django_crontab', ... ] CRONJOBS 변수 선언 첫번째 매개변수 : 실행주기 설정으로 기존 cron 사용법(분,시,일,월,요일)과 동일하다. * * * * * : 매분마다 실행 */10 * * * * : 10분마다 실행 0 * * * * : 매시간마다 실행 0 0 * * * : 자정마다 실행 두번째 매개변수 : 반복 실행할 함수 세번째 매개변수 : cron 실행로그 저장 경로 (선택사항) .

    December 9, 2021 Read
    Hero Image
    Django 소셜로그인(oauth) google 연동

    django restframework 기반의 구글(google) 인증 로그인 백엔드서버로 별도의 auth관련 라이브러리는 설치하지 않고 구현한다. Google Cloud Platform에서 로그인에 사용하는 환경변수를 설정하고 진행한다. 1. 로그인 환경변수 설정 1.1. 프로젝트 생성 Google Cloud Platform에서 [프로젝트 만들기] 메뉴로 간다. 프로젝트 이름을 지정하고 [만들기] 클릭한다. 1.2. 사용자 인증 정보 설정 [사용자 인증 정보] → [사용자 인증 정보 만들기] → [OAuth 클라이언트 ID] 선택 애플리케이션 유형: 웹 애플리케이션 선택 후 앱 이름 지정 승인된 자바스크립트 원본: 로그인 테스트 서버 주소입력

    November 22, 2021 Read
    Hero Image
    Django 소셜로그인(oauth) naver 연동

    django restframework 기반의 네이버(naver) 인증 로그인 백엔드서버로 별도의 auth관련 라이브러리는 설치하지 않고 구현한다. 네이버 개발자 사이트에서 로그인에 사용하는 환경변수를 설정하고 진행한다. 1. 로그인 환경변수 설정 1.1. 애플리케이션 생성 및 웹 로그인 설정 네이버 개발자 사이트 가입하고 아래의 과정을 진행한다. [Application] → [애플리케이션 등록] → 애플리케이션 이름 지정 → [사용 API] 네이버 로그인 선택한다. 사용자 제공 정보 선택에서 [이메일 주소]를 필수로 선택한다.(회원가입 확인 용도로 사용예정) 서비스 환경의 PC 웹을 선택한다. 서비스 URL 과 로그인 Callback URL을 작성하고 [등록하기]를 클릭한다.

    November 12, 2021 Read
    Hero Image
    Django 소셜로그인(oauth) kakao 연동

    django restframework 기반의 카카오(kakao) 인증 로그인 백엔드서버로 별도의 auth관련 라이브러리는 설치하지 않고 구현한다. 카카오 개발자 사이트에서 로그인에 사용하는 환경변수를 설정하고 진행한다. 1. 로그인 환경변수 설정 1.1. 애플리케이션 생성 카카오 개발자 사이트에 가입후 [내 애플리케이션] → [애플리케이션 추가하기] 클릭한다. 앱 아이콘(선택), 앱 이름, 사업자명을 등록한다. 정상적으로 등록되어 애플리케이션 목록에서 확인할 수 있다. 1.2. 웹 로그인 설정 생성한 앱을 클릭하면 키 정보를 확인하고 [플랫폼 설정하기] 클릭한다. 예시코드 kakao login 기능에서는 REST API 키를 사용한다.

    October 11, 2021 Read
    Hero Image
    Django drf_yasg Swagger 기본 사용법

    drf_yasg : REST 프레임워크용 swagger/openAPI 문서 자동화 라이브러리 swagger : 개발자가 REST 웹 서비스를 설계, 빌드, 문서화, 테스트를 도와주는 오픈소스 소프트웨어 프레임워크 drf_yasg : 1.20.0 호환버전 Django Rest Framework : 3.10, 3.11, 3.12 Django : 2.2, 3.0, 3.1 Python : 3.6, 3.7, 3.8, 3.9 라이브러리 설치 pip install -U drf-yasg 1. 프로젝트 생성 환경 : windwos 10 # 가상환경 생성 및 접속 > python -m venv venv > venv\Scripts\activate # 라이브러리 설치 (venv)> pip install django (venv)> pip install djangorestframework (venv)> pip install drf-yasg # 프로젝트 및 앱 생성 (venv)> django-admin startproject config .

    September 24, 2021 Read
    Hero Image
    Django socketio 라이브러리 활용한 통신

    1. 라이브러리 설치 1.1. server 라이브러리 설치 pip install python-socketio 1.2. client 라이브러리 설치 pip install "python-socketio[client]" 2. Server django settings projectname/wsgi.py ... import socketio from appname.views import sio # sio code path ... # application = get_wsgi_application() sio.register_namespace(TransferNamespace('/transfer')) django_app = get_wsgi_application() application = socketio.WSGIApp(sio, django_app) appname/views.py import socketio sio = socketio.Server(async_mode='threading', async_handlers=True, ping_interval=60) class TransferNamespace(socketio.Namespace): def on_connect(self, sid: str, environ: dict): ''' 클라이언트 접속 ''' print(f"connect address = {environ['REMOTE_ADDR']}, sid = {sid}") def on_disconnect(self, sid: str): ''' 클라이언트 접속 종료 ''' print(f"disconnect Client disconnected = {sid}") def send_event(self, sid: str): ''' 특정 sid 클라이언트에 이벤트 전송 ''' print("send_event") self.

    June 11, 2021 Read
    Hero Image
    Django json 데이터 반환하기

    api 서버 등 json 데이터로 통신하는 서버에서 사용할 수 있는 예제이다. 1. 사전 설정 프로젝트 생성 후 user 앱의 User 모델을 생성한다. 임의의 user 데이터를 2개 등록한다. models.py class User(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=20, unique=True) 2. 사용 예시 2.1. QuerySet(Model Instance)을 json형태로 변환할 경우 .all() serializers.serialize('json', value_name) 함수를 사용하여 json 형태로 변환시킨다. views.py from django.core import serializers res_data = User.objects.all() # <QuerySet [<User: User object (1)>, <User: User object (2)>]> res_data = serializers.

    April 20, 2021 Read
    Hero Image
    Django model 참조 객체 호출하기

    1. 정참조와 역참조 객체 호출 데이터베이스의 임의의 테이블로 User, Occupation 생성한다. 두 테이블은 User 모델의 객체가 Occupation 모델의 객체를 N:1 참조관계를 가진다. models.py 설정 class User(models.Model): name = models.CharField(max_length=50) age = models.IntegerField() job = models.ForeignKey('Occupation', on_delete=models.CASCADE) class Occupation(models.Model): name = models.CharField(max_length=50) 2. 정참조 객체 호출하기 user1 객체가 Occupation 모델을 참조키(ForeignKey)로 정참조하여, Occupation 모델의 속성을 사용할 수 있다. user1 = User.objects.get(id = 1) user1.job.name >>> 'Developer' 3. 역참조 객체 호출하기 역참조 관계에서는 정참조와 같이 바로 참조한 모델의 속성을 사용할 수 없다.

    April 7, 2021 Read
    Hero Image
    Django 동적 모델 및 테이블 생성

    1. Django 동적 모델 및 테이블 생성 django는 makemigrations, migrate 명령어를 통하여 테이블 생성한다. 이때 웹서버는 실행중일 경우 중단하고 다시 재시작한다. 운영환경에 따라서 웹서버가 중단되지 않고 운영이 필요한경우에는 위의 방법이 아닌 동적 모델 및 테이블 생성방법이 필요하다. 2. 예시코드 2.1. 상속받을 추상모델 작성 models.py from django.db import models class Board(models.Model): title = models.CharField(max_length=100) contents = models.CharField(max_length=500) class Meta: abstract = True 2.2. 동적 모델 생성 및 삭제 from .models import Board TABLE_MAP = {} def create_model(name: str): ''' 동적 모델 생성 ''' baseclass = Board tablename = board2 # attrs 를 dict 형태로 지정한다.

    April 7, 2021 Read
    • ««
    • «
    • 1
    • 2
    • »
    • »»
    바로가기
    • About
    • Recent Posts
    Contact me:
    • sangjuncha.dev@gmail.com

    Toha Theme Logo Toha
    Copyright 2020. SangjunCha all rights reserved.
    Powered by Hugo Logo