Back-End

    [Django] DataFrame to CSV (download)

    개요 1. Django에서 DB의 data를 추출해서 DataFrame으로 만든다. 2. 만들어진 DataFrame을 한글파일명을 가진 csv파일로 변환해서 내보낸다. dataframe to csv를 수행할 정보에 대해 아주 간단하게 요약한 class 다이어그램이다. Question이 다수 있을 것이고, 지원자들은 특정 Question에 대해서 Answer를 남길 것이다. 지원일자 이름 생년월일 Question1.content Question2.content ... 0 2021-10-11 23:56:23 김 1998.09.09 ~~ ** ... 1 2021-10-13 13:54:11 이 1999.09.09 %% ## .... 2 2021-10-14 08:10:45 박 2000.09.09 && @@ .....

    [Djnago] Django 이메일 인증하기(Thread)

    비밀번호를 찾기 위해서 가입 했던 이메일로 인증번호을 보내는 기능에 대한 설명 ## users/apis.py class SendPasswordEmailApi(PublicApiMixin, APIView): def post(self, request, *args, **kwargs): """ 비밀번호 변경 인증 코드 발송 """ target_username = request.data.get('username', '') target_email = request.data.get('email', '') target_user = User.objects.filter( username=target_username, email=target_email ) if target_user.exists(): auth_string = ..

    [Django] Django Api 인증, 권한 설정

    [Django] Django Api 인증, 권한 설정

    Django api를 하나로 묶어주는 라우팅 설정 방법과 api에 따른 권한 설정을 알아보자 api 폴더 urls.py mixins.py 위 두가지 파일로 구성했다. 이들은 앞으로 만들 모든 api들의 구심점 역할을 하는 파일이다. urls.py를 통해서 위 그림에서 보이듯이 엔드포인트를 다양하게 구성해준다. api/ 로 시작하는 url을 다양하게 뻗어나가게 해주는 역할을 한다. urls.py ## api/urls.py from django.urls import path, include v1_patterns = [ path('auth/', include('auth.urls')), path('users/', include('users.urls')), path('board/', include('boards...

    [Django] PROJECT 홈페이지 (유저 모델, 쿼리 최적화)

    지난 9월 중순부터 부산 연합 동아리 PROJECT 웹사이트 백엔드를 맡아서 홈페이지를 개설하게 되었다. 아직 미완성이고 프론트와 협의를 거칠 부분이 많이 존재해서 수정작업이 더 필요하지만, 수정될 때마다 이 글도 수정하기로 하고 일단 지금까지 어떤식으로 작업했는지 기록을 해두려고 한다. 우선 반드시 필요한 기능으로는 회원가입/로그인 공지사항 활동기록 이 정도를 꼽을 수 있었다. django 파일의 현재 파일 tree 구조이다. 더보기 . ├── FAQs │ ├── __init__.py │ ├── __pycache__ │ ├── admin.py │ ├── apis.py │ ├── apps.py │ ├── migrations │ │ ├── 0001_initial.py │ │ ├── __init__.py │..

    [Django] ORM 쿼리 최적화 (select_related, annotate, aggregates)

    [Django] ORM 쿼리 최적화 (select_related, annotate, aggregates)

    Django는 처음엔 배우기 쉬웠는데 배우면 배울수록 알아야할게 많아진다... 기초만 보고 단순한 웹 사이트를 만드는데는 장고만큼 쉬운게 없을 것 같다.. 관리자 페이지도 있고, 기본적인 유저 모델이나 인증 시스템이 만들어져 있기 때문에. 그런데 객체지향을 제대로 이해해야지만 장고 프레임워크도 이해할 수 있을 것 같다. 객체지향 모델의 동작 방식이 이해가 되면 객체의 메소드들을 오버라이딩해서 커스터마이징 해야하고.. 인증 방식도 커스터마이징 해야하고.. 할게 많음 그러다 django_rest_framework를 만나면 새로운 프레임워크를 처음부터 배우는것같은 느낌이 든다.. rest_framework에서 serializer를 처음 만났을때 엄청난 거부감이 들면서 왜 써야하지 싶었는데.. 사실 아직도 정확..

    [Security] XSS(Cross Site Scripting) 취약점 Django

    [Security] XSS(Cross Site Scripting) 취약점 Django

    웹 개발을 하면 절대 무시할 수 없는 XSS, CSRF 등과 같은 보안 문제가 존재한다. 하지만 이들은 공격 방법에 대한 원리가 워낙 잘 알려졌고, 따라서 이에 대한 해결책도 쉽게 찾아볼 수 있다. 먼저 XSS의 원리와 공격 방법을 알아보고 해결방안을 유추해 본 다음 유추한 내용이 맞는지도 확인해보자. XSS(Cross Site Scripting) 특정 웹 사이트에 임의의 스크립트를 삽입해서 공격하는 방법이다. 주로 사용자의 입력 데이터를 검증하지 않을 때 발생하게 된다. 주로 사이트의 게시판과 관련된 보안 취약점이다. 사이트의 사용자를 주로 공격하고, 스크립트 실행을 통한 유저 정보 탈취가 주 목적이다. 어떤 공격을 하는가? 스크립트가 포함된 게시글을 열람 시 유저가 원치않는 스크립트를 실행하게 한다...

    [Django] Google 소셜 로그인 (OAuth2.0)

    [Django] Google 소셜 로그인 (OAuth2.0)

    DRF(Django REST Framework)를 사용해서 Google계정으로 회원가입, 로그인을 하는 방법을 알아보자. 최종 수정 : 2022/06/08 (OAuth2.0 흐름 수정) Google API 등록 Google Cloud Platform 하나의 계정으로 모든 Google 서비스를 Google Cloud Platform을 사용하려면 로그인하세요. accounts.google.com 1. 접속 후 새 프로젝트 생성 2. 사용자 인증정보 만들기 윗 부분의 + 사용자 인증 정보 만들기 클릭 OAuth 클라이언트 ID 클릭 3. OAuth 동의 * 표시된 항목을 적는다. 도메인을 설정해준다 = 사용할 url을 적어준다. 4. 클라이언트 ID확인 및 Callback uri 설정 위에서 했듯이 좌측 사용..

    [Django] 회원정보 모델 설계 UserModel design #1

    [Django] 회원정보 모델 설계 UserModel design #1

    Django UserModel Design #1 1. 회원정보 모델 생성 - User 모델 회원정보 모델을 사용자 임의로 구성하고 정의하기 위해서 AbstractBaseUser 클래스를 상속받아 User모델을 새롭게 구성했다 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 from django.db import models from django.contrib.auth.models import AbstractBaseUser class User(AbstractBaseUser): password = models.CharField(max_length=128) username = models.CharFiel..

    [Django project #2] conda + Django + mysql 개발 환경 구축하기 (2) for Mac

    [Django project #2] conda + Django + mysql 개발 환경 구축하기 (2) for Mac

    [Django project #1] conda + Django + mysql 개발 환경 구축하기 (1) for Mac 1. Mac 에서 conda 가상환경 설치하기 1) conda 설치하기 Anaconda | Individual Edition Anaconda's open-source Individual Edition is the easiest way to perform Python/R data science and machine learning.. hyeo-noo.tistory.com MySQL세팅을 완료 했으니 Django에 MySQL 데이터베이스를 적용해보자! 사실 데이터 베이스 적용은 개발이 완료되고, 배포 전에 데이터의 사이즈를 고려해서 정한다고 하는데.. 어차피 나중에 할 거 지금 미리 연습해 ..

    [Django project #1] conda + Django + mysql 개발 환경 구축하기 (1) for Mac

    [Django project #1] conda + Django + mysql 개발 환경 구축하기 (1) for Mac

    1. Mac 에서 conda 가상환경 설치하기 1) conda 설치하기 Anaconda | Individual Edition Anaconda's open-source Individual Edition is the easiest way to perform Python/R data science and machine learning on a single machine. www.anaconda.com 위 anaconda 사이트에서 conda를 다운로드 해야한다 사이트 스크롤을 내리다 보면 위와 같은 화면이 나오고, 여기서 Graphical Installer 를 선택한다 설치 완료 후 // 제대로 설치가 되었는지 확인 conda --version // 최신버전으로 업데이트 conda update conda 설치..