Django 실전 정리
2020년05월14일패스트캠퍼스 Django 실전 정리
트랜잭션
DB에서 사용되는 용어로, 여러 일련의 과정들을 하나의 단위로 통합하는 것이라 보면 된다. 하나라도 실패 시, 롤백되어 무결성을 유지해주는거 같다.
from django.db import transaction
with transaction.atomic():
내용 작성
쿼리셋
ListView 등을 사용할 때, 쿼리셋을 이용해서 원하는 데이터만 갖고 올 수 있다.
class OrderList(ListView):
def get_queryset(self, **kwargs):
queryset = Order.objects.filter(fcuser__email=self.request.session.get('user'))
return queryset
데코레이터
데코레이터를 활용 url을 통해 클래스뷰들에 접근하면 dispatch메소드가 실행된다고 한다. 이를 method_decorator를 사용하면 클래스에다가 적용할 수 있다.
from django.shortcuts import redirect
from .models import Fcuser
def login_required(function):
def wrap(request, *args, **kwargs):
user = request.session.get('user')
if user is None or not user:
return redirect('/login/')
return function(request, *args, **kwargs)
return wrap
def admin_required(function):
def wrap(request, *args, **kwargs):
user = request.session.get('user')
if user is None or not user:
return redirect('/login/')
user = Fcuser.objects.get(email=user)
if user.level != 'admin':
return redirect('/')
return function(request, *args, **kwargs)
return wrap
#####################################
from django.utils.decorators import method_decorator # 클래스에 데코레이터 할 수 있음
from fcuser.decorators import login_required
@method_decorator(admin_required, name='dispatch')
class ProductCreate(FormView):
template_name = 'register_product.html'
form_class = RegisterForm
success_url = '/product/'
form_valid
유효성이 끝나고 호출되는 함수