본문 바로가기

728x90
반응형

Python/Django

(37)
Django: ckeditor # django-ckeditor # 텍스트 에디터 html 태그를 입혀주는 ckeditor를 django library로 구현 이용 라이브러리: https://github.com/django-ckeditor/django-ckeditor 설치 및 실행 pip install django-ckeditor INSTALLED_APPS 추가 # settings.py INSTALLED_APPS = [ ..., 'ckeditor', 'ckeditor_uploader'# 이미지 업로드를 위해 필요(browse server를 통해 embeding할 이미지 찾는데 쓰임 ] 이미지가 upload될 ckeditor path 설정 # settings.py CKEDITOR_UPLOAD_PATH = 'uploads/' 이미지 upload시 필요한 url 등록 및 이미지 등록 UI를..
Python Django: symmetrical option in ManyToMany # ManyToMany에서 한쪽만 관계 설정 # 테이블 자신을 참조하는 경우 Django에서 ManyToMany를 통해 Table을 연결하면, 예를 들어 A, B 테이블을 ManyToMany를 통해 연결시 A에서 B를 연결할 경우, B에서 A 방향으로도 자동 연결 그러나 A -> B를 연결 하더라도, B -> A로 자동연결이 되는 것을 원치 않는 상황도 존재 예를 들어 A 의 row에 대한 추천 상품으로 B의 row 들을 지정한다고 해보자. 그러나 B의 row에 대한 추천 상품은 A가 아닌 C를 지정하길 원한다고 하면, 기존 ManyToMany 방식으로 B의 추천상품을 불러올 시 A가 함께 가져와진다. 이는 ManyToMany의 기본 옵션이 상호 대칭적인 symmetrical = True 이기 때문 따라서 ManyToMany설정시 symmetrical = False 옵션으로 주면..
Django: HTTP DELETE Method # HTTP # DELETE, PUT # GET, POST Django에서 HTTP request는 내장기능으로 GET, POST만 지원하고 DELETE, PUT은 지원하지 않는다. print(dir(request)) 위와 같이 찍어보면 ['COOKIES', 'FILES', 'GET', 'LANGUAGE_CODE', 'META', 'POST', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__module__', '__ne__', '__new__',..
Python Django: select_related 언제 쓰고, 왜 쓰냐? 1) select_related 예시 1. my_fr = MyFruit.objects.get(fruit_id=fr_id, customer=customer) 2. my_fr = MyFruit.objects.select_related('fruit').get(fruit_id=fr_id, customer=customer) 1과 2는 어떤게 더 효율적이거나 좋은 방법일까? ------------- 1과 2 중 더 효율적인 방법은 상황에 따라 다르다. my_fr = MyFruit.objects.get(fruit_id=fr_id, customer=customer) 이 방법은 MyFruit 객체를 가져올 때, 연결된 fruit 객체는 가져오지 않습니다. 따라서 이후에 my_fr.fruit에 접근..
Python Django: 동시 접속 로그인 막기 # session # session_key Django를 통해서 동시 접속을 막기 원리: 로그인 할 때 생기는 session_key를 DB에 저장 하고, 새로 로그인이 될 때 기존 session_key를 유저의 DB에서 불러와서 DB의 Session에서 해당 session_key를 지움으로써 기존 로그인은 해지 시키기 # models.py class User(AbstractUser): username = models.CharField(max_length=150) session_key = models.CharField(max_length=40, null=True, blank=True) # views.py from django.contrib import auth user = User.objects.get("로그인하려는 유저") if user.sess..
Python Django - request session 이용하기 # get 에서 post로 data 넘기기 get으로 받은 data를 post로 넘겨주고 싶은데, 보안상 html, javascript 등에 노출시키고 싶지 않은 경우 get에서 request.session에 담아서 post에서 불러오면 된다. if request.method == 'GET' request.session['sample_value'] = 'It is sample' return render(request, 'get.html') if request.method == 'POST' print(request.session['sample_value']) # output: it is sample return JsonResponse({"response":"success"})
Django: QuerySet to Json #QuerySet Json으로 보내기 # serializer # JsonResponse Djano QuerySet 값을 Json으로 보내줄 때, data를 serialize를 하지 않고 보내면 다음과 같은 오류 발생 TypeError: Object of type MyCoupon is not JSON serializable 따라서 serialize를 해줘서 보내야 한다. from django.core import serializers 위와 같이 serializers를 import해서 이용해도 되지만 ORM query로 얻은 QuerySet을 .values()로 뽑아서 보내줘도 된다. from django.http import JsonResponse from .models import YourModel def your_view(request): queryset = YourModel.object..
Django: 시간 변환 # timezone, pytz # UTC, Asia/Seoul Django를 처음 설치하면, 시간과 관련된 설정이 아래와 같이 되어 있습니다. # settings.py TIME_ZONE = 'UTC' 우선, UTC가 무엇일까요? UTC (협정 세계시)는 Coordinated Universal Time의 약자로, 세계 표준 시간을 의미합니다. UTC는 현대 국제 시간 체계의 기준으로 사용되며, 지구의 자전 속도와 태양 시간을 기반으로 합니다. UTC는 전 세계의 시간대와 동기화되어 있어, 국제적인 커뮤니케이션과 데이터 처리에 있어서 일관된 시간을 제공합니다. UTC는 그리니치 평균시 (GMT)와 동일한 시간대를 기준으로 하지만, 두 개념 사이에는 약간의 차이가 있습니다. GMT는 지구 자전 속도를 기준으로 한 시간 체계이지만, UTC는 원자시계를 기준으로 정확한 시간..

728x90
반응형