컴굥일지

[Django Study 06] Django CRUD 및 CreateView 본문

프로그래밍 강의/Django

[Django Study 06] Django CRUD 및 CreateView

gyong 2022. 4. 18. 00:05
반응형

[Class Based View, 장고의 CRUD]

  • 장고는 CRUD 사용에 최적화 되어있다. (class 제공한다.)
  • function based 보다 class based가 더 좋다.
  • CRUD를 사용하면 생산성이 높아지고, 가독성도 좋아지며, 복잡성이 낮아지고, 시간도 적게 소모된다.


[CreateView를 통한 회원가입 구현]

  • 중요 파라미터를 적어주어야 한다. ( model, form_class, success_url, template_name )
#accountapp/views.py
class AccountCreateView(CreateView):
        # 어떤 모델을 사용할 것이다. #User - 장고에서 기본 제공해주는 모델
    model = User  

        # User 모델을 만들기 위해 사용할 form이 필요하다 
        # UserCreationForm - 장고가 기본 form을 제공해준다.
    form_class = UserCreationForm 

        # 계정을 만드는데 성공했다면, 어느 경로로 다시 재연결 할 것인가
        # reverse_lazy(경로)는 reverse()와 기능은 같은데 class에서 사용하는 방식이다.    
        success_url = reverse_lazy('accountapp:hello_world') 

      # 템플릿을 지정해주어야 한다. (회원가입을 할 때 보는 화면)
    template_name = "accountapp/create.html" 
    # create.html을 새로 생성하면 당연히 urls.py에도 연결을 해주어야 한다.
#accountapp/urls.py
#class based view에서는 .as_view()를 붙어야 한다.
path('create/', AccountCreateView.as_view(), name='create')
<!-- create.html -->
{% extends 'base.html' %}

{% block content %}

    <div style="text-align:center">
<!--        action에는 요청을 보내는 url이 들어간다. 
veiws.py에서 reverse(경로)로 쓰던 것처럼 HTML은 아래와 같이 쓴다.
            "accountapp라는 앱에서 create라는 routing으로 가라"-->
        <form action="{% url 'accountapp:create' %}" method = "post">
<!--        POST방식을 쓰기 위해서는 csrf토큰이 필요하다-->
            {% csrf_token %}

<!--        views.py의 AccountCreateView에서 form_class로 form을 받아왔다. 
                        그걸 그대로 쓰면 된다.-->
            {{ form }}
            <input type="submit" class="btn btn-primary">
        </form>
    </div>

{% endblock %}


[출처] 작정하고 장고! Django Pinterest 따라만들기 : 바닥부터 배포까지

섹션 1. Django Tutorial (20강)

섹션 2. Accountapp implementation (21강)

https://www.inflearn.com/course/%EC%9E%A5%EA%B3%A0-%ED%95%80%ED%84%B0%EB%A0%88%EC%8A%A4%ED%8A%B8/dashboard

반응형
Comments