20210918 TIL

2021. 9. 18. 16:40

1. Django

* inflearn "작정하고 장고! Djnago로 Pinterest 따라만들기" 강좌 참고

<create view 구현(회원가입)>

 

accountapp >> 계정관련 작업

 

계정과 관련된 애플리케이션을 가지고 'CRUD' 에 맞춰서 view에 대한 코드를 짜야 한다.

"class based view" 방식으로 앞으로 코드가 진행될 것이다.

 

<accountapp/views.py>

class AccountCreateView(CreateView):
model = User
form_class = UserCreationForm
success_url = reverse_lazy('accountapp:hello_world')
template_name = 'accountapp/create.html'

<코드 뜯어보기>

1.model = a (a 라는 모델 생성)


2.form_class = UserCreationForm (django에서 쓰는 기본 create form)


3.sucess_url 

>>이 폼을 만드는데 성공했다면 어떤 경로로 지정해줄것인가?
*reverse /reverse.lazy
기능은 별차이 없으나 reverse는 function based view, reverse.lazy는 class based.view 에서 사용.

4.template_name = '앱이름/템플릿이름.html'

 

<accountapp/create.html(생성)>

1.기존의 hello_world.html 에서 extend 해준 방식 그대로 가져온다.

2. !! 중요 !! form이 설정되면 반드시 반드시 csrf_token 구문을 입력시켜준다.

3. !! 중요 !! 기존의 function 방식은 div를 여러개 만들어가면서 form 을 형성해주었지만

class는 "{{ form }}" 을 설정해주는 것 만으로 views.py에 지정해주었던 createviewform을  바로 가져다 사용가능하다.

 

다음은, create.html의 경로를 지정해줘야 한다.

<accountapp/urls.py>

urlpatterns = [

	path('create/', AccountCreateView.as_view(), name='create'),

]

class 형식을 경로에 지정하려면 classname.as_view() 으로 설정해주면 된다.

이 화면이 나왔다면, 잘 구현이 된 것이다.

 

Q. reverse 에 대한 기능이 아직 잘 이해가 안된다.

>>

reverse는 {app_name}:{route_name} 순으로 되어있는 문자열을 받아 해당 루트의 HTTP 주소상 경로를 역으로 돌려주는 함수입니다.

즉, accountapp: create 를 주소상 경로로 되돌려 주면 account/create/ 형식으로 반환되는 것이다.

 

Q. as_view 가 어떤 역할을 지니고 있는 지 아직 잘 이해가 안간다.

>>

views.py에 작성해 놓은 CreateView는 실제로 구동되는 로직이 아니다.
단순히 선언을 해둔 상태이며, url.py 안에 넣는 경로(path)에는 실제로 웹 요청을 받아 CreateView를 처리하는 함수를 할당해야한다.

이때 이 함수를 돌려주는 메서드가 as_view의 역할이다.


요약 :  django는 프레임워크 즉 기능도구의 모음이다. 공식문서에 다 나와있고, 메서드의 기능 역시 공식 문서에 잘 나와있다.

공식 문서와 친해지자...


2. 정처기 실기 준비

수제비 2021 <개발환경 구축> 파트 기출문제 및 예상문제 풀고 2회독 하기.

 

 

 

'TIL' 카테고리의 다른 글

20210928~20210929 TIL  (0) 2021.10.01
20210920~20210926 TIL  (0) 2021.09.28
20210913 TIL  (0) 2021.09.13
20210909 TIL  (0) 2021.09.09
20210902 TIL  (0) 2021.09.02

BELATED ARTICLES

more