Back-End/Django

Back-End/Django

    [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 설치..