목록코딩공부/Django (12)
슈코딩
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/l1VYW/btrFImJnHrE/ktfEFpH4E3LKoPg4NhjD20/img.png)
오늘은 JWT토큰을 발급해서 로그인하는 방식으로 django로 넘어오면서 처음 사용하게 되어서 강의때 배웠던 내용들을 간단하게 정리해보려고 한다. 기존에 사용했던 인증 방식 : 세션 인증 이번에 사용한 인증 방식 : 토큰 인증 #세션인증 기본적으로 브라우저에서 사용자가 인증을 수행하면 서버에서는 사용자의 정보를 저장하고, 그 응답으로 JSESSIONID 라는 키를 이용해 클라이언트(사용자) 브라우저의 쿠키에 세션의 정보를 저장하게됨. 이후 클라이언트는 브라우저 쿠키에 저장된 JSESSIONID 로 저장된 세션 정보를 이용해 인가(Authorization)된 정보에 접근 할 수 있게 된다. #토큰인증 토큰인증 방식은 사용자가 인증을 수행하면 서버에서는 토큰을 생성한 뒤에 저장하지 않고 토큰값을 사용자의 브..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/kzqQR/btrFImWXA8j/i2mg3SByi4qyYjtzhZdek0/img.jpg)
오늘은 추천시스템 프로젝트에서도 검색기능을 만들때 썼었고, 이번 DRF과제에서도 사용을 한 Q 에 대해서 정리를 해보려고 한다. 우선 Q는 간단하게 쿼리 그자체를 객체로 다룰수 있게 하는 class이다. Django 에서 사용하는 filter(), get()같은 ORM안의 옵션을 Q()를 사용하여 동일하게 적용 시킬 수 있다. 특징으로는 and, or 를 적용 시킬수 있다는 점이다. 글로만 설명하면 와닿질 않으니 예제를 보면서 알아봐야겠다. from django.db.models.query_utils import Q from rest_framework.views import APIView class UserView(APIView): def get(self, request): #취미 중 산책이 있거나, 나..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/xefwi/btrFyRw5vkO/HhkzvT9TcFg9FAlRN76VyK/img.jpg)
1. DRF (Django Rest Framework) 🤔 DRF란? DRF는 Python으로 개발된 대표적인 웹 프레임워크중 하나인 Django 안에서 RESTful API 서버를 쉽게 만들 수 있게 도와주는 라이브러리이다. 특징 중에서 가장 대표적인 것은 Serialize 기능이 존재한다는 것이다. 그렇다면 Serializer는 무엇일까? #기본설정 pip install django pip install djangorestframework # settings.py INSTALLED_APPS = [ ... , ... , ... , (app_name), 'rest_framework',
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/0URS1/btrFz3DvaGD/rxwwiWz1suPKlkZxkbTMAK/img.png)
오늘은 Django에서 기본으로 제공하는 Admin페이지를 커스텀해서 더 활용도가 높게 바꿔주는 법에 대해서 기록하려고 한다. 이번 DRF특강때 배운내용인데, Admin페이지를 꾸밀수있다는게 신기했고 나중에도 활용을 하기 위해서 정리를 해본다. 우선 코드부터 보면, user APP의 admin.py 에 이런식으로 작성을 했다. 사용 방법은 TabulaInline과 StackedInline 모두 동일 / 스택은 세로로 표시 , 타불라는 가로로 표시 # class UserProfileInline(admin.TabulaInline): class UserProfileInline(admin.StackedInline): model = UserProfileModel def formfield_for_manytomany..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/A5tQj/btrFfZOG2Pa/KYPi8JWL7j5ihWATDo3PRk/img.webp)
1. Stacktrace 에러 발생했을때, a함수안에 -> b함수안에 -> c함수에서 에러가 났다. 위 에러이미지처럼 어디서 에러가 났는지 보여준다. 이처럼 스택 추적(stacktrace)은 프로그램에서 예외가 발생했을 때 어떻게 함수가 호출되었는지, 어디서 오류가 발생했는지를 특정할 수 있는 수단이다. 문제 발생시 원인 규명에 도움이 된다. 2. 가상환경 설치 venv 가상환경은 패키지들의 버전을 통일해서 개발 할 수 있게 하기위해서 사용한다. 버전이 다르게되면 어떤 컴퓨터에서는 기능이 작동하고 , 어떤 컴퓨터에서는 작동하지 않는 경우가 발생한다. 설치 : python -m venv venv 실행 : venv/Scripts/activate #실행 권한이 없을때 권한 리스트 조회 : Get-Executi..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bqZtfO/btrEQfRILZS/BkP4mDzei5UVXgeFoiXY9K/img.png)
과제 1. args, kwargs를 사용하는 예제 코드 짜보기 2. mutable과 immutable은 어떤 특성이 있고, 어떤 자료형이 어디에 해당하는지 서술하기 3. DB Field에서 사용되는 Key 종류와 특징 서술하기 4. django에서 queryset과 object는 어떻게 다른지 서술하기 #1 args, kwargs 를 사용한 예제 def average_score(a, b, *args, **kwargs): print(f"평균점수는 {(a+b+args[0]+kwargs['d'])/4} 점 입니다.") return average_score(80, 94, 68, d=90) #2 mutable , imutable 의 특성과 어떤 자료형이 어느것에 해당하는지 서술 Mutable : 변할 수 있는 값..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bbkjAl/btrDEZJLCcR/YiAWjfPUvr08p1khhengjk/img.png)
장고 템플릿 언어 Flask에서 볼 수 있는 Jinja2 템플릿 엔진과 같은 형태인 기본적인 문법이 장고에서도 제공이 된다. DB에서 데이터를 가져오거나, 복잡한 수식의 파이썬 코드 결과를 반환해야 할때, views.py 에서 작성해서 템플릿으로 전달을 할 수 가 있다. 템플릿 변수, 템플릿, 필터 , 템플릿 코멘트 등이 있다. 템플릿 변수 템플릿 변수의 사용형식은 {{ }} 로 구성되있다. {{ variable }} 문자, 숫자, 언더바(_) 를 사용하여 변수를 정의 변수의 속성에 접근하기 위한 dot(.) 표현도 가능 정의되지 않은 변수를 만나면 빈 문자열('')을 반환. 이것은 settings.py 의 TEMPLATE_STRING_IF_INVALID 에서 변경할 수 있다. 템플릿 필터 변수에 필터를..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/CuYdm/btrDIoCcJMS/IT8oOdkuNuSLxLBXj6rcP1/img.jpg)
퀴즈 내용 제한시간 1시간 (권장 30분내) 1. Django 프로젝트를 생성하고, blog 라는 앱을 만들어서 settings.py 에 등록해보세요. - 장고 프로젝트를 생성하고, 터미널에 django-admin startapp blog 를 입력하면 생성된다. - settings.py 에 blog 추가 2.models.py 에 이 들어갈 수 있는 Article 이라는 모델을 만들어보세요. 3.models.py에 이 들어갈 수 있는 Category 라는 모델을 만들어 보세요. 4.Article 모델의 글 카테고리에는, Category 모델에 존재하는 카테고리만 들어갈 수 있도록 만들어보세요. (힌트: Foreign Key) -내가 적은 답- from django.db import models class ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/lEJuv/btrDAPUWmnX/GHnfnHrIhliMRHKKjj1430/img.png)
1. 데이터 베이스 연결 파이참으로 프로젝트 세팅을 하게되면 settings.py 안에 DATABASES 가 있다. 강의에서는 SQLlite를 사용해서 기본세팅으로 실습을 했다. 다른 DB를 사용하기위해선 우선 그 DB를 설치를 하고 settings.py에 새로 작성을 해야 한다. 예시) mysql 그 후 파이참을 실행시켜서 서버를 작동시키고 파이참 우측에 데이터베이스 클릭 후 + 버튼을 눌러서 프로젝트 파일에 자동으로 생성된 db파일을 연동시켜서 우리가 볼 수 있는 형태까지 연결을 하면 준비는 끝난다. 이미지에 나와있는 my_user 테이블을 제외한 나머지 테이블은 장고에서 기본적으로 제공하는 테이블구조이다. 생성한 APP의 models.py에서 모델을 생성하고 추가하게되면 my_user테이블과 함께 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/1Mi1M/btrDz6waPlR/os6cW7CUteEM2EPUQZZ8lK/img.jpg)
Django 프로젝트 세팅이 끝나고 실행을 해보면 처음에 나오게 되는 페이지가 있다. 신기하게도 아무런 html을 작성하지 않았는데도 127.0.0.1:8000 포트로 접속해보면 이런 페이지가 뜬다. 장고에서 기본으로 제공하는 기본페이지이다. 이렇게 장고에서 우리가 기본적으로 사용 할 수 있도록 하는 많은 기능들이 있는데, 제공하는 기능중 하나가 바로 'Admin' 이다. 페이지의 관리자를 위해 각종 관리를 할 수 있는 관리자 페이지이다. 이 페이지는 127.0.0.1:8000/admin 주소로 접속을 하면 접속 할 수 있다. 그리고 접속을 하게되면 로그인을 해야되는데 계정이 없으니 계정을 생성해야 한다. 터미널을 열어서 python manage.py createsuperuser 를 입력하고 나오는 Us..