Python/Django (20) 썸네일형 리스트형 [Django] Serializer가 뭐야? Django Rest Framework를 사용하면 serializer라는 개념이 새롭게 등장합니다. serializer는 직렬화라는 뜻을 가진 단어입니다. 직렬화에 대한 네이버의 사전적 정의는 다음과 같습니다. 공간적으로 동시에 존재하는 상태로 표현되어 있는 데이터를 이것에 대응하는 직렬(시리얼)인 상태로 존재하도록 변환한다라는 의미가 있다. 간단하게 말해서 django에 저장되어 있는 모델 인스턴스를 REST API에서 사용하는 JSON의 형태로 바꿔주는 것을 말합니다. 다음은 Serializer를 설명하기 위한 코드입니다. # models.py class Journalist(models.Model): first_name = models.CharField(max_length=60) last_name =.. [Django] post_save()는 뭐야? 모델을 생성함에 있어 필수적으로 동시에 생성되어야 하는 경우가 있습니다. User 생성 시 Profile 모델 생성을 예시로 들 수 있습니다. 이때 사용할 수 있는 것이 바로 post_save()입니다. post_save()의 내용은 모델의 save() 함수의 끝에 전해지게 됩니다. post_save()와 함께 전송되는 인자들은 다음과 같습니다. sender: 모델 클라스를 저장합니다. instance: 모델의 record 데이터를 가지고 있습니다. created: 새로운 record이 생성되었다면 True 아니라면 False를 반환합니다. raw: 새로운 record의 생성 시간이 현재 시간일 때 True를 반환합니다. using: 데이터베이스의 alias를 반환합니다. update_fields: mo.. [Django] django-session-timeout은 뭐야? django-session-timeout은 session을 종료할 수 있는 시간을 지정할 수 있는 패키지입니다. 한번 로그인한 홈페이지에서 컴퓨터를 종료하기 전까지 로그아웃이 되지 않으면 보안상의 문제가 발생할 수도 있습니다. 따라서 여러 웹페이지들은 마지막 활동 시점을 기준으로 지정 시간 동안 활동이 없으면 session을 종료시키게 됩니다. 이러한 기능을 django에서는 django-session-timeout 패키지를 통해 구현이 가능합니다. 다음은 설치 코드입니다. pip install django-session-timeout 설치가 완료되면 project에 있는 settings.py에서 코드를 수정해야합니다. 우선 MIDDLEWARE 설정에 가서 다음의 코드들이 추가되어 있는지 확인합니다. M.. [Django] APIView, api_view가 뭐야? django rest framework를 사용하다 보면 접할 수 있는 APIView 클래스와 api_view 장식자에 대해 알아보겠습니다. 우선 api_view부터 알아보겠습니다. api_view는 아래의 코드에서 확인할 수 있듯이 decorator입니다. api_view decorator는 첫 번째 인자는 해당 함수에서 사용할 수 있는 request method를 지정하는 것으로 형식은 리스트입니다. @api_view(['GET', 'POST']) def article_list_create_api_view(request): if request.method == 'GET': articles = Article.objects.filter(active=True) serializer = ArticleSerial.. [Django] ImageField 저장 시 이름 변경하기 Django 코드 작성 중에 ImageField를 통해 이미지 저장 시 이름이 파일명 그대로 들어가는 것을 임의의 이름으로 바꾸고 싶을 때 사용할 수 있는 방법입니다. 우선 아래의 코드는 project 폴더 안에 utils.py 파일을 만든 후에 작성한 것입니다. import os from uuid import uuid4 def rename_imagefile_to_uuid(instance, filename): upload_to = f'media/foods/{instance}' ext = filename.split('.')[-1] uuid = uuid4().hex if instance: filename = '{}_{}.{}'.format(uuid, instance, ext) else: filename = .. [Django] related_name은 뭐야? 데이터베이스에서 다른 테이블을 참조는 것은 Foreign Key를 사용하여 해결할 수 있다. 그렇다면 자신을 참조하고 있는 테이블을 참조하는 것은 어떻게 해야 할까? django에서는 related_name을 사용하는 것으로 이를 해결할 수 있습니다. 다음의 model.py 코드를 통해 설명해보겠습니다. class Video(models.Model): title = models.CharField(max_length=50) description = models.TextField(max_length=1000, blank=True, null=True) class Playlist(models.Model): title = models.CharField(max_length=50) description = model.. [Django] Javasrcipt에서 ORM 정보 사용하기 성격 테스트 홈페이지를 만들던 중에 model의 정보를 Javascript에서 사용해야 하는 상황이 발생하였습니다. 따라서 ORM의 정보를 html 코드에서 사용하는 것처럼 Javascript에서 사용할 수 있는지 알아보는 도중 다음의 방법을 찾았습니다. let info = [ {% for item in result_info %} { type: "{{ item.result.name }}", sub_title: "{{ item.sub_title }}", title: "{{ item.title }}", result_img: "{{ item.result_image.url }}", description_1: "{{ item.description_1 }}", description_2: "{{ item.descri.. [Django] honeypot은 뭐야? honeypot은 비정상적인 접근을 탐지하기 위해 의도적으로 설치해 둔 시스템을 의미합니다. 따라서 django-honeypot은 누군가 진짜 admin 사이트가 아닌 개발자가 설정해놓은 admin 사이트에 접근을 시도하였을 경우 해당 로그인 기록을 저장하는 기능을 합니다. 다음은 honeypot 설치 코드입니다. pip install django-admin-honeypot 설치가 완료되면 settings.py에서 INSTALLED_APPS에 'admin_honeypot'을 추가해줍니다. INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions'.. 이전 1 2 3 다음