Python(52)
-
[Python Django] 4. Decorator 이용하기
decorator 생성 # user/decotators.py from django.shortcuts import redirect def login_required(function): def wrap(request, *args, **kwargs): user_id = request.session.get('user_id') if user_id is None or not user_id: return redirect("/user/login/") return function(request, *args, **kwargs) return wrap Function Base View (FBV)에 적용 # user/views.py from user.decotators import login_required @login_req..
2022.03.26 -
[Python Django] 3-8. CBV DeleteView를 이용한 게시판 글 삭제 기능 구현
views.py에 delete class 추가 get을 오버라이드 하지 않는다면 template파일이 필요하며 해당 파일에서 submit 처리가 필요하다 post를 오버라이드 하여 작성자와 로그인을 확인한 뒤 delete를 진행한다, 생략한다면 바로 삭제된다 delete를 실제 delete가 아닌 상태값을 변화시키는 용도로 변경하려면 delete를 오버라이드 한다 class BoardDeleteView(DeleteView): model = Board success_url = '/board/list/' #template_name = "board_delete.html" # template 없이 접근만으로 삭제 # 생략한다면 template에서 submit을 실행해주어야 한다 def get(self, requ..
2022.03.26 -
[Python Django] 3-7. CBV UpdateView를 이용한 글 수정 기능구현
urls.py 추가 from django.urls import path from board.views import BoardCreateView, BoardDetailView, BoardListView, BoardUpdateView urlpatterns = [ path('create/', BoardCreateView.as_view()), path('update//', BoardUpdateView.as_view()), # 추가 path('list/', BoardListView.as_view()), path('detail//', BoardDetailView.as_view()) ] UpdateView UpdateView는 두 가지 방식으로 처리할 수 있는데 filed를 이용한 방식과 form_class를 이용한..
2022.03.26 -
[Python Django] 3-6. CBV ListView - Pagination 응용 get_elided_page_range()
기본 pagination을 사용하면 전체 페이지, 현재 페이지, 이전 페이지, 다음 페이지로 이루어진 UI만 제작이 가능하나, get_elided_page_range를 이용하면 현재 페이지를 중심으로 앞 뒤 페이지의 넘버링을 보여주는 UI제작이 가능하다 get_elided_page_range(page_num, on_each_side={int}, on_ends={int}) page_num 현재 페이지 on_each_side 현재 페이지 양 옆으로 나올 다른 페이지의 개수 총 100페이지이고 현재 10페이지, on_each_side값이 3이라면 7,8,9,[10],11,12,13 출력 총 100페이지이고 현재 1페이지 , on_each_side값이 3이라면 [1], 2, 3, 4 출력 on_ends 페이지 ..
2022.03.26 -
[Python Django] 3-5. CBV ListView에 Pagination 적용
view.py 수정 # board/templates/board_list.html class BoardListView(ListView): model = Board template_name = "board_list.html" context_object_name = "board_list" ordering = "-id" paginate_by = 5 # 옵션추가: 한 페이지당 5개의 게시물 paginate_orphans = 1 # 옵션추가: 마지막 페이지가 1개일 경우 직전 페이지에 연결 page_kwarg = "p" # 옵션추가: 파라미터값을 page > p 변경 board_list.html 수정 이전 페이지 / 현재 페이지 번호 / 총 페이지 개수 / 다음 페이지로 구성된 Pagination이 생성됩니다 # ..
2022.03.26 -
[Python Django] 3-4. CBV ListView를 이용한 List 구현
views.py 수정 BoardListView 클래스 추가 # board/views.py class BoardListView(ListView): template_name = "board_list.html" model = Board context_object_name = "board_list" ordering = "-id" urls.py 수정 # board/views.py from django.urls import path from board.views import BoardCreateView, BoardDetailView, BoardListView urlpatterns = [ path('create/', BoardCreateView.as_view()), path('list/', BoardListView...
2022.03.26