20210918 TIL
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 |