- admin
- decorators
- fields
- logger
- middleware
- models
- pagination
- parsers
- permissions
- routers
- serializers
- utils
- views
- viewsets
class ReadonlyMixin()
model을 admin에서 수정할 수 없도록 함
class ReadonlyInlineMixin(ReadonlyMixin)
Inline model을 admin에서 수정할 수 없도록 함
class AdminMixin()
admin에 기본적으로 사용되는 mixin
def get_inlines(request, obj)
데이터 생성 시 readonly로 지정된 mixin을 작성할 수 없도록 함
def get_fields(request, obj=None)
admin 페이지에서 보여지는 field의 순서를 models.py에 정의된 순서대로 변경
def add_view(request, form_url="", extra_context=None)
특정 상황에서 admin add 페이지에서 pk가 추가되는 문제 방지
def change_view(request, object_id, form_url="", extra_context=None)
get_readonly_fields에서 사용될 _fields 저장
def get_readonly_fields(request, obj=None)
ModelAdmin에서 model field에 존재하지 않는 field를 추가해서 사용할 경우 자동으로 read_only_fields하여 에러가 발생하는 것을 방지
class SingletonModelAdmin(ModelAdmin)
admin 페이지에서 record를 하나만 생성할 수 있도록 함
class AdminSite(admin.AdminSite)
admin 페이지에서 보여지는 model 순서 변겅
- 기존 : a~z
- 변경 : admin.site.register()에 등록된 순서
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):
...
class DefaultErrorMessageMixin()
rest framework에서 사용되는 error message에 field의 verbose_name, capital_verbose_name, 한글 조사 추가 지원
class DefaultLogHandler(RichHandler)
기본적으로 사용되는 핸들러
class ConsoleLogHandler(RichHandler)
콘솔에 로그를 출력하는 핸들러
class NoOutputLogHandler(RichHandler)
로그를 출력하지 않는 핸들러
class TimedRotatingFileHandler(logging.handlers.TimedRotatingFileHandler)
로그 파일을 날짜별로 생성하는 핸들러
class LogFileHandler(RichHandler)
파일에 로그를 출력하는 핸들러
class CustomLogger(logging.Logger)
로그를 로그 출력 시 pretty format 적용
class DefaultFormatter(logging.Formatter)
logging에 user 정보를 추가하는 formatter
class ConsoleFormatter(DefaultFormatter)
console에 출력하는 log의 color style 설정
class RequestLogMiddleware()
Request / Response logging
class LoggedInUserMiddleware()
user info를 logging 하기 위해 사용
class Model(models.Model)
__str__이 작성되지 않은 경우 raise default ordering을 -pk로 설정
class SingletonManager(models.Manager)
singleton model의 객체를 반환하고 없는 경우 None을 반환
class SingletonModel(Model)
record를 한개 이상 생성하지 못하도록 하는 모델
class CheckVerboseNameAttributeMixin()
필드에 verbose_name이 정의되어 있는지 체크하는 mixin
class CheckRelatedNameAttributeMixin()
외래 키 필드에 related_name이 정의되어 있는지 체크하는 mixin
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
class PageNumberPagination(pagination.PageNumberPagination)
pagination 양식 정의 get_pagination_class 함수를 통해 동적으로 page_size를 설정하여 사용
class RemoveEmptyValueMixin()
Json, Form parser의 empty value 제거 mixin
class RemoveEmptyValueMultiPartParser(MultiPartParser)
MultiPartParser의 empty value 제거
def check_login(*args, **kwargs)
사용자의 로그인 여부를 체크하는 decorator kwargs: safe_methods(optional): 권한에 상관 없이 허용할 http method 지정
class IsAuthenticated(BasePermission)
로그인 한 사용자만 사용 가능
class IsAuthenticatedOrCreateOnly(BasePermission)
로그인 한 사용자가 아니라면 생성만 가능
class IsAdminUser(BasePermission)
admin 사용자만 접근 가능
class UserRouter(DefaultRouter)
UserViewSet을 위한 router 사용자 정보(retrieve) 조회 시 request.user를 사용, pk 불필요
class CustomActionUrlRouter(DefaultRouter)
action(detail=True)로 설정 시 url 구조 변경 기본 url 구조
- ${pk}/${action_url}/ 수정된 url 구조
- ${action_url}/${pk(optional)}/
class ResponseErrorSerializerMixin()
error response 시 list가 아닌 string 형태로 반환
class ModelSerializer(ResponseErrorSerializerMixin,
serializers.ModelSerializer)
default error message 및 커스텀 옵션들을 적용하기 위해 serializer field mapping 재정의
@deconstructible
class FilenameObfusecate()
filefield에 업로드 되는 파일의 파일명을 무작위로 변경할 때 사용
def get_cached_list(view_info)
특정 view의 캐싱 목록 확인
def clear_cached_view(view_info)
특정 view의 캐싱 데이터 삭제
def clear_all_cache()
모든 캐싱 데이터 삭제
def get_client_ip(request)
사용자 ip 주소 반환
async def static_serve(request, path, insecure=False, **kwargs)
async용 static_server 함수 재정의
async def static_view(request, path, document_root=None, show_indexes=False)
async용 static_view 함수 재정의
def list_to_string_exception_handler(exc, context)
list 형태의 exception info를 string으로 변환
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'
},
}