Django 스터디

View

CBV 제네릭 뷰 (ListView, DetailView) 실습 + admin 에서 테이블 반영하는 법 (Doo 님 발표)


프로젝트 정하기

스터디가 끝나고 모두가 완성된 결과물을 손에 쥐고 있었으면 해서 프로젝트를 하나 정하기로 했다. 각자 아이디어를 낸 결과, 맛집 사이트로 주제를 정했다. 너무 식상하지 않냐고? 우리 사이트는 다르다. 어떤 사이트인지는 앞으로의 실습을 기록하면서 자연스레 말하려고 한다.



Decoraotr 만들기

스쿨오브웹을 보고 배운 데코레이터를 간단하게 구현했다. Django에서 데코레이터가 나오길래 공부했는데 아직 확실하게 이해되지는 않는다. 계속 써봐야 감이 올 것 같다.


def oil(func) : 
    def fire() :
        print("불이야~!")
        return func() 

    return fire

@oil 
def firefire(): 
    print("활활")


>>> firefire()
불이야~!
활활


파라미터 전달 시

def my_deco(func):
    def wrapper(*args, **kwargs) : 
        print(f'{func.__name__} 함수 실행 전입니다.')
        return func(*args, **kwargs)
    
    return wrapper

@my_deco
def display__info(name, age) : 
    print(f'{name}의 나이는 {age}살입니다.')


>>> display__info('John', 35)    
display__info 함수 실행 전입니다.
John 나이는 35살입니다.


functools의 wraps

from functools import wraps

def my_kitty(func) : 
    @wraps(func)
    def wrapper():
        print("나비야~")
        
        return func()
        
    return wrapper

@my_kitty
def cat():
    """야옹이가 대답한다."""
    print("냐옹.")


>>> cat()
나비야~
냐옹.

>>> cat.__doc__
'야옹이가 대답한다.'


functools의 singledispatch

from functools import singledispatch

@singledispatch
def fun(x) : 
    print("this is basic action :", x)
    
@fun.register(str)
def _(x) :
    print("thih is string :", x)
    
@fun.register(int)
def _(x) :
    print("this is integer :", x)
    
@fun.register(object)
def _(x) :
    print("this is object :", x)



Django 스터디 준비

Django 스터디 전 준비를 위해 login, logout 뷰를 실습.