FrameWork/Django 19

FrameWork/Django
장고(Django) 프레임워크 소개와 프로젝트 생성하기

파이썬은 빅데이터 영역뿐만 아니라 GUI, Web 분야에서도 쉬운 사용법과 직관적인 문법 덕분에 많은 사용자들이 즐겨 사용하고 있는 언어 중 하나이다. 그중 Web 영역에서 파이썬을 사용하려면 프레임워크를 이용하여 프로젝트를 진행하게 된다면 쉽게 웹사이트를 구축하고 운영할 수 있다. 파이썬으로 활용할 수 있는 프레임워크는 Django, Flask, Fastapi.. 등등 많은 종류가 있지만 그중에서도 어느 정도 완성적으로 기능들을 제공하는 Django 프레임워크에 대해 이야기해보고자 한다. 프레임워크 일단 장고에 대해 알아보기 전에 프레임워크가 무엇인지에 대해서 살펴보자. 프레임워크란 "어떠한 목적을 달성하기 위해 복잡하게 적혀 있는 문제를 해결하기 위한 구조"라고 설명하곤 한다. 그리곤 항상 뜨겁게 나..

FrameWork/Django
Forbidden (403) CSRF verification failed 오류 해결하기

상황 Django을 서버에 올려서 배포 한 후에 admin 페이지에서 로그인을 할 때, Http통신에서 Post 메소드를 사용할 때 403 에러를 일으키며 Forbidden (403) CSRF verification failed 로그를 보게 됬다. 해결 Django는 서버가 공격받는 것을 방지하기 위해 CSRF 토큰이 존재하는 이들의 POST요청을 받아드리고, 그 이외는 보안을 위해 권한을 허락하지 않는다고 한다. Django 4.0 이상 부터는 CSRF_TRUSTED_ORIGINS을 이용하여 CSRF 대한 권한을 허락 할 수 있다. CSRF_TRUSTED_ORIGINS = ['stie_address'] https://velog.io/@gene028/%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC..

FrameWork/Django
DRF FBV, CBV (APIView, Mixin, Generic, Viewset)

DRF에서 뷰를 나타내기 위해서는 2가지의 방법이 있는데 하나는 함수 기반 뷰(Function Base View)와 다른 하나는 클래스 기반 뷰 CBA(Class Base View)가 있습니다. 기본 속성 함수 기반 뷰와 클래스 기반 뷰를 다루기전에 둘이 공통적으로 제공하는 속성 값이 있는데 아래와 같습니다. renderer_classes (직렬화 클래스) - JSON 직렬화 : rest_framework.renderers.JSONRenderer - HTML 직렬화 : rest_framework.renderers.TemplateHTMLRenderer parser_classes (비직렬화 클래스) - JSON 포맷 처리 :rest_framework.parsers.JSONParser - FormParser ..

FrameWork/Django
DRF에서 ModelViewset을 이용하여 API을 작성할 때, 쿼리 스트링 사용 방법

Django Rest Framework에서 ModelViewset을 이용하여 API을 작성할 때, 쿼리 스트링을 사용하기 위해서는 django-filter 라이브러리가 필요하다. django-filter Docs : https://www.django-rest-framework.org/api-guide/filtering/#djangofilterbackend Filtering - Django REST framework www.django-rest-framework.org 일단 위의 공식문서를 따라서 작성하자면 아래와 같다. 🖥️ settings.py INSTALLED_APPS = [ ... 'django_filters', ... ] REST_FRAMEWORK = { 'DEFAULT_FILTER_BACKEND..

FrameWork/Django
django-environ을 이용하여 환경변수 관리하기

django-environ 대게 django을 하다보면, 남들에게 보여주면 안되는 API_KEY 값들이나 다른 중요한 값들이 존재하기 마련이다. 따라서 이런 값들을 따로 관리해야하는 필요성을 알게되는데 이를 도와주는것이 djago-environ이다. 일단 django-envirion을 설치한다. pip install django-environ 그 다음 프로젝트 안에 .env 라는 파일을 생성 한 뒤, 파일안에 변수와 값을 기입한뒤, settings.py 에서 사용한다. 📕 .env SECRET_KEY='django-insecure-n&(433#pnjvih&mmil99u666&5cm*d0_o$@*cj41934u=$w7*q' DEBUG=True 🔖.env 파일에 값을 넣을때 변수와 값 사이에 뛰어쓰기가 존재..

FrameWork/Django
ValueError: The field admin.LogEntry.user was declared with a lazy reference to 'accounts.account', but app 'accounts' doesn't provide model ' 에러 해결

상황 django에서 유저 모델을 만들어서 migrate하는 도중에 해당 오류가 발생하였다. 해결 https://stackoverflow.com/questions/50324561/valueerror-the-field-admin-logentry-user-was-declared-with-a-lazy-reference ValueError: The field admin.LogEntry.user was declared with a lazy reference I'm developing a new django project and stuck with migration. I would like to make a UserModel, and in order to do that, I did two things so far...

FrameWork/Django
django-debug-toolbar을 통한 SQL 디버깅 정보 확인하기

django-debug-toolbar Djago-debug-toolbar은 현재 request/response에 대한 다양한 디버깅 정보를 보여주는 써드파티이다. 다양한 Panel들을 지원하며 SQLPanel을 통해, 각 요청 처리시에 발생한 SQL 내역을 확인할수 있다. 참고로 Ajax 요청에 대한 지원은 불가하다 django-debug-toolbar 설치하기 📒 공식문서 : https://django-debug-toolbar.readthedocs.io/en/latest/ Django Debug Toolbar — Django Debug Toolbar 3.8.1 documentation © Copyright 2023, Django Debug Toolbar developers and contributors..

FrameWork/Django
mark_safe을 통해 어드민 페이지에서 이미지 나타내기

어드민페이지에서 이미지 나타내기Django admin에서 list_display을 통해 해당 model의 img을 표현하고 싶다면 다음과 같이 작성한다. from django.contrib import adminfrom .models import Postfrom django.utils.safestring import mark_safe@admin.register(Post)class PostAdmin(admin.ModelAdmin): list_display = ['pk', 'photo_view','message'] def photo_view(self, obj): return mark_safe(f"")  django는 기본적으로 autoscape (html 파일이 아닌 외..

FrameWork/Django
ERROR : django.db.utils.OperationalError: no such table 오류 해결

상황 pycharm 한번 써볼려고 vsc에서 환경을 옮겼다가 다시 vsc로 돌아왔는데, pycharm에서 python manage.py migrate 해서 문제가 난 모양이었다. 일단 이것 때문에 난생 처음으로 git reset --commit version 해서 돌아가기 까지 했었는데, 근본적으로 5시간 정도 고쳐지지 않아서 해매다 해결방법을 찾았다. 해결 일반적인 해결방법으로는 마이그레이션 디렉토리에 있는 파일들과 db.sqlite3 파일을 지워준다. # db.sqlite3은 수동 삭제 요망 find . -path "*/migrations/*.py" -not -name "__init__.py" -delete find . -path "*/migrations/*.pyc" -delete 그리고 아래 명령어..