Skip to content

LCH-1/django_base_project

Repository files navigation

Table of Contents

admin

ReadonlyMixin Objects

class ReadonlyMixin()

model을 admin에서 수정할 수 없도록 함

ReadonlyInlineMixin Objects

class ReadonlyInlineMixin(ReadonlyMixin)

Inline model을 admin에서 수정할 수 없도록 함

AdminMixin Objects

class AdminMixin()

admin에 기본적으로 사용되는 mixin

get_inlines

def get_inlines(request, obj)

데이터 생성 시 readonly로 지정된 mixin을 작성할 수 없도록 함

get_fields

def get_fields(request, obj=None)

admin 페이지에서 보여지는 field의 순서를 models.py에 정의된 순서대로 변경

add_view

def add_view(request, form_url="", extra_context=None)

특정 상황에서 admin add 페이지에서 pk가 추가되는 문제 방지

change_view

def change_view(request, object_id, form_url="", extra_context=None)

get_readonly_fields에서 사용될 _fields 저장

get_readonly_fields

def get_readonly_fields(request, obj=None)

ModelAdmin에서 model field에 존재하지 않는 field를 추가해서 사용할 경우 자동으로 read_only_fields하여 에러가 발생하는 것을 방지

SingletonModelAdmin Objects

class SingletonModelAdmin(ModelAdmin)

admin 페이지에서 record를 하나만 생성할 수 있도록 함

AdminSite Objects

class AdminSite(admin.AdminSite)

admin 페이지에서 보여지는 model 순서 변겅

  • 기존 : a~z
  • 변경 : admin.site.register()에 등록된 순서

decorators

caching_view

def caching_view(caching_request_data=True, alias=None)

view에 들어오는 동일한 요청에 대해 응답을 캐싱하는 데코레이터

Arguments:

  • caching_request_data bool, optional - request.GET의 parameter를 캐싱 키에 포함할지 여부. Defaults to True.
  • alias str, optional - 캐싱 키를 직접 지정할 경우 사용. Defaults to None.

Example:

class UserViewSet(viewsets.ModelViewSet):
  ...
  @caching_view(alias="${some alias}", caching_request_data=False)
  @action(detail=False, methods=["GET"])
  def some_function(self, request):
    ...

fields

DefaultErrorMessageMixin Objects

class DefaultErrorMessageMixin()

rest framework에서 사용되는 error message에 field의 verbose_name, capital_verbose_name, 한글 조사 추가 지원

logger

DefaultLogHandler Objects

class DefaultLogHandler(RichHandler)

기본적으로 사용되는 핸들러

ConsoleLogHandler Objects

class ConsoleLogHandler(RichHandler)

콘솔에 로그를 출력하는 핸들러

NoOutputLogHandler Objects

class NoOutputLogHandler(RichHandler)

로그를 출력하지 않는 핸들러

TimedRotatingFileHandler Objects

class TimedRotatingFileHandler(logging.handlers.TimedRotatingFileHandler)

로그 파일을 날짜별로 생성하는 핸들러

LogFileHandler Objects

class LogFileHandler(RichHandler)

파일에 로그를 출력하는 핸들러

CustomLogger Objects

class CustomLogger(logging.Logger)

로그를 로그 출력 시 pretty format 적용

DefaultFormatter Objects

class DefaultFormatter(logging.Formatter)

logging에 user 정보를 추가하는 formatter

ConsoleFormatter Objects

class ConsoleFormatter(DefaultFormatter)

console에 출력하는 log의 color style 설정

middleware

RequestLogMiddleware Objects

class RequestLogMiddleware()

Request / Response logging

LoggedInUserMiddleware Objects

class LoggedInUserMiddleware()

user info를 logging 하기 위해 사용

models

Model Objects

class Model(models.Model)

__str__이 작성되지 않은 경우 raise default ordering을 -pk로 설정

SingletonManager Objects

class SingletonManager(models.Manager)

singleton model의 객체를 반환하고 없는 경우 None을 반환

SingletonModel Objects

class SingletonModel(Model)

record를 한개 이상 생성하지 못하도록 하는 모델

CheckVerboseNameAttributeMixin Objects

class CheckVerboseNameAttributeMixin()

필드에 verbose_name이 정의되어 있는지 체크하는 mixin

CheckRelatedNameAttributeMixin Objects

class CheckRelatedNameAttributeMixin()

외래 키 필드에 related_name이 정의되어 있는지 체크하는 mixin

FileField Objects

class FileField(CheckVerboseNameAttributeMixin, models.FileField)

기존 FileField에서 확장자, 용량 관련 옵션 추가 Kwargs: allowed_content_types (bool, optional) - list containing allowed content_types.

Example:

  • ['pdf', 'png', 'jpg', 'jpeg']

max_upload_size (bool, optional) - a number indicating the maximum file size allowed for upload.

Examples:

  • 1024 # 1kb
  • 10 * 1024 # 10kb
  • 10 * 1024 * 1024 # 10mb
  • 1kb
  • 10mb
  • 1g or 10g

pagination

PageNumberPagination Objects

class PageNumberPagination(pagination.PageNumberPagination)

pagination 양식 정의 get_pagination_class 함수를 통해 동적으로 page_size를 설정하여 사용

parsers

RemoveEmptyValueMixin Objects

class RemoveEmptyValueMixin()

Json, Form parser의 empty value 제거 mixin

RemoveEmptyValueMultiPartParser Objects

class RemoveEmptyValueMultiPartParser(MultiPartParser)

MultiPartParser의 empty value 제거

permissions

check_login

def check_login(*args, **kwargs)

사용자의 로그인 여부를 체크하는 decorator kwargs: safe_methods(optional): 권한에 상관 없이 허용할 http method 지정

IsAuthenticated Objects

class IsAuthenticated(BasePermission)

로그인 한 사용자만 사용 가능

IsAuthenticatedOrCreateOnly Objects

class IsAuthenticatedOrCreateOnly(BasePermission)

로그인 한 사용자가 아니라면 생성만 가능

IsAdminUser Objects

class IsAdminUser(BasePermission)

admin 사용자만 접근 가능

routers

UserRouter Objects

class UserRouter(DefaultRouter)

UserViewSet을 위한 router 사용자 정보(retrieve) 조회 시 request.user를 사용, pk 불필요

CustomActionUrlRouter Objects

class CustomActionUrlRouter(DefaultRouter)

action(detail=True)로 설정 시 url 구조 변경 기본 url 구조

  • ${pk}/${action_url}/ 수정된 url 구조
  • ${action_url}/${pk(optional)}/

serializers

ResponseErrorSerializerMixin Objects

class ResponseErrorSerializerMixin()

error response 시 list가 아닌 string 형태로 반환

ModelSerializer Objects

class ModelSerializer(ResponseErrorSerializerMixin,
                      serializers.ModelSerializer)

default error message 및 커스텀 옵션들을 적용하기 위해 serializer field mapping 재정의

utils

FilenameObfusecate Objects

@deconstructible
class FilenameObfusecate()

filefield에 업로드 되는 파일의 파일명을 무작위로 변경할 때 사용

get_cached_list

def get_cached_list(view_info)

특정 view의 캐싱 목록 확인

clear_cached_view

def clear_cached_view(view_info)

특정 view의 캐싱 데이터 삭제

clear_all_cache

def clear_all_cache()

모든 캐싱 데이터 삭제

get_client_ip

def get_client_ip(request)

사용자 ip 주소 반환

views

static_serve

async def static_serve(request, path, insecure=False, **kwargs)

async용 static_server 함수 재정의

static_view

async def static_view(request, path, document_root=None, show_indexes=False)

async용 static_view 함수 재정의

list_to_string_exception_handler

def list_to_string_exception_handler(exc, context)

list 형태의 exception info를 string으로 변환

viewsets

SearchQuerysetMixin Objects

class SearchQuerysetMixin()

searches를 통해 url query parameter에서 검색에 사용될 키워드와 필드를 지정할 수 있습니다.
아래 예시의 경우 ?category=main&search=keyword와 같은 요청에 대해
각각 category, title/contents 필드에 대해 queryset filter를 적용합니다.
type(optional) : 검색에 사용될 필드에 대해 lookup을 지정할 수 있으며, 지정하지 않을 경우 일치하는 항목을 검색합니다.

Example:

 searches = {
  'category': {
   'fields': ['category'],
  }
  'search': {
   'fields': ['title', 'contents'],
   'type': 'icontains'
  },
 }

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published