django 17

회원가입, 로그인, 로그아웃

https://docs.djangoproject.com/en/3.1/topics/auth/default/#how-to-log-a-user-in Using the Django authentication system | Django documentation | Django Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate docs.djangoproject.com django 공식문서에 로그인, 로그아웃 하는 방법이 아주 잘 나와있다. 보고 views.py에 작성하면 된다. django.contrib.auth.forms 에..

django 2020.12.20

여러 개의 form을 만들어주는 formset

테이블이 다른 테이블과 관계가 없다면 이처럼 modelformset_factory를 사용하면 된다. formset = Authorformset(request.POST) formset instance화는 이처럼 하면 된다. foreign key 관계인 object에서 접근할 때는 이 코드는 'Mike Royko'가 Author인 Book들 전부를 데이터베이스에서 가져와서 formset에 넣는다. BookFormSet = inlineformset_factory(Author, Book, fields=('title',)) 첫번째 매개변수는 '다대일 관계'에서 '일'에 해당하는 클래스, 두번째 매개변수는 '다'에 해당하는 클래스이다. Book은 foreignKey로 Author를 가지고 있다. '트리' 자료 구조..

django 2020.12.19

CRUD를 위한 ModelForm

CRUD 중 Create, Update, Delete를 위해서는 제출할 수 있는 Form이 필요하다. 태그는 템플릿에서 별도로 만들어 줘야 한다. views.py에서 Create order_form.html에 접속하면 request.method == 'GET'이다. else에 해당하므로 빈 form을 만들고 order_form.html에 매개변수로 전달해준다. 빈 form이기 때문에 input 태그에 기본적으로 아무것도 입력이 안 되어있다. 만약 order_form.html에서 submit 버튼을 눌러서 request.method == 'POST'라면 if에 해당하므로 request.POST를 보고 Form을 채운다. (max_length를 넘었거나 email field에 이메일 양식을 안 적었다면 에러..

django 2020.12.19

model 관계(데이터베이스)

django model에서는 다른 model과의 관계를 규정하기 위한 몇 가지 방법이 존재한다. ManyToOneRelationship -> ForeignKey ManyToManyRelationship -> ManyToManyField OneToOneRelationship -> OneToOneField 가령 한 번에 하나의 제품만 주문할 수 있는 시스템이 있다고 해보자. Order는 Product, Customer와 관련이 있다. 위 3개 중 어떤 관계일까? 위 가정에 의해 Order는 하나의 Product와 매핑된다. 하지만 Product는 여러 개의 Order와 매핑될 수 있다. 저금통 Product가 있다고 해보자. 여러 주문에서 저금통을 구매할 수 있으니 하나의 Product에 여러 Order를 ..

django 2020.12.18

django url pattern

프로젝트 폴더 urls.py (주석에도 잘 설명되어 있지만 다시 한 번 정리) 프로젝트 level의 urls.py 에서는 include() 함수를 사용해서 특정 패턴으로 시작하는 url을 app level의 urls.py로 넘긴다. app 폴더 urls.py app level urls.py에서는 특정 url 패턴을 찾아내서 views.py에서 정의한 함수에 넘겨줘야 한다. url에 매개변수를 넣고자 하는 경우 처럼 사용하면 된다. path("customer//", views.customer), url path에 name 키워드 매개변수 사용 주석에도 나와있듯이 path에 name을 지정해주면 어느 template에서든 간단하게 url로 연결시킬 수 있다. 즉, url을 hard하게 짤 필요가 없어진다. ..

django 2020.12.17

공통으로 사용하는 templates나 static은 프로젝트 폴더로 뺄 수 있다

하나의 기능을 하는 app 폴더 내에서 templates나 static 폴더를 만들어서 사용하면 따로 설정해줄 게 없다. settings.py를 안 고치는 이상 django는 자체적으로 app directory에서 templates 폴더도 찾고 static 폴더도 찾는다. 하지만 여러 app에서 공통으로 사용하고자 한다면 재사용을 위해 프로젝트 폴더(최상단)로 빼주는 게 좋다. 이 경우 프로젝트의 settings.py에서 코드를 추가해 줘야 한다. templates를 최상단에서 사용하고자 할 경우 'DIRS' key에 [BASE_DIR / 'templates']를 넣어줘야 한다. 원래는 빈 리스트이다. 이 한 줄로 인해 django는 BASE_DIR(최상단 디렉토리)에서 templates 폴더를 찾아보게..

django 2020.12.17