win-j의 자유로운 블로그

블로그 개발일지 002

개발일지 · 2025.09.08 · 조회 16

블로그 개발일지 002


Django를 활용한 개인 블로그 만들기 프로젝트 002


이전에 블로그 메인 틀만 만들어서 사이트를 게시하기 시작했습니다. 이번에는 글쓰기 먼저 수정을 해야겠다는 생각을 하게 되어서 현재는 글쓰기 작성을 수정해서 추가한 상태입니다.

Django에서 블로그 글을 작성하기 위해서는 admin 사이트로 이동해 admin폼에 있는 글쓰기를 통해서 글을 작성해야 하는 불편함이 있었습니다. 그래서 티스토리와 비슷한 환경의 글쓰기 페이지를 추가로 만들어서 작성하게 되었습니다.



우선 티스토리 블로그에 들어가면 하단에 "관리" 탭에 관리자와 글쓰기 링크가 있어 관리자모드로 이동하거나 글쓰기 모드로 이동하는 기능이 있는데 제 블로그에도 똑같은 기능을 만들도록 사이드바 하단에 <div>로 관리 항목으로 관리자, 글쓰기 링크를 추가했습니다.


@staff_member_required
def my_view(request):
    return HttpResponse("관리자권한이 있는 유저만 접근 가능")

django 내장 데코레이터에 탑제된 기능인 @staff_member_required 기능을 사용해서 해당 url로 접근할 때 관리자 권한이 있는 유저만 접근이 가능하도록 할 수 있는 기능이 있습니다.


from django.contrib.auth.decorators import login_required

@login_required
def my_view(request):
    return HttpResponse("로그인한 유저만 접근 가능")


관리자 권한만 접근이 가능하게 하는 @staff_member_required 뿐만 아니라 로그인한 유저만 접근이 가능하게 하는 @login_required 데코레이터


from django.contrib.auth.decorators import permission_required

@permission_required('blog.add_post', raise_exception=True)
def add_post(request):
    return HttpResponse("blog 앱의 add_post 권한이 있는 유저만 접근 가능")


혹은 특정 권한이 있는 유저만 접근이 가능하게 하는 @permission_required


from django.contrib.auth.decorators import user_passes_test

def email_check(user):
    return user.email.endswith('@example.com')

@user_passes_test(email_check)
def special_view(request):
    return HttpResponse("이메일이 example.com인 사용자만 접근 가능")

사용자에 대해 커스텀 조건 함수를 직접 정의하여 접근을 제한하는 @user_passes_test 가 있습니다.


저는 글쓰기 권한은 관리자만 사용하도록 했기 때문에 @staff_member_required 를 views.py에서 글쓰기 위에 추가하여 사용했습니다.



왼쪽은 티스토리에서 게시글 작성하는 폼이고 오른쪽은 win-j.com에서 게시글을 작성할 때 보여지는 게시글 입력 폼입니다. 티스토리의 글쓰기 에디터의 디자인이 마음에 들어서 비슷한 모습으로 작성해서 만들었습니다.

중요한 정보는 타이틀, 카테고리, 게시글내용, 태그 기능이고 다음으로 "임시저장"과 "완료" 버튼으로 만들었습니다.


티스토리에서는 이미지를 업로드하고 이미지 목록에 "대표" 이미지를 설정할 수 있도록 되어있는데 제 사이트의 글쓰기가 TOAST 에디터를 적용하고 있어서 여기에 대표이미지("썸네일")을 어떻게 적용해야 할지에 대한 고민을 하고 있습니다. 우선은 글쓰기 기능에서 글쓰기를 하고 추가로 admin 화면에서 썸네일을 추가해서 수정하는 방식으로 게시글을 작성해야 될거 같은데.. 이기능은 추가로 만들 예정입니다.


조금 어렵다고 생각되는 기능들은 뒤로 밀리고 간단한 기능들 먼저 추가될 수 있지만.. 너무 오래 끌면 블로그 글 작성이 전혀 안될거 같아서 조금씩 조금씩 적용을 해가면서 글을 작성하도록 노력해보려고 합니다.