본문 바로가기

Framework/Django

소셜 로그인 * Social 계정으로 로그인 - pip 패키지 : allauth - 이전에 구현한 로그인과의 차이는? 기존 login 방식 : db.sqlite3에 계정정보 넣음, db와 db를 다루는 로직이 한 공간에 있음 social 계정 login 방식 : db와 db를 다루는 로직이 다른 공간에 있음, 구글 서버에 request를 보내고 token을 주고받음(안정적) - allauth 를 설치해 줍니다. - settings.py 에 가서 sites와 allauth, provider를 추가해 줍니다. - settings.py 아래 쪽에 코드들을 작성해 줍니다. - urls.py 에서 우선 include를 import 해 줍니다. - path를 작성해 줍니다. (allauth 패키지에서 이미 url ..
Form * Form(입력공간) - model형식에 맞는 입력공간 만들기 - html로 만들면 되는거 아닐까? 하나하나 form 태그 만드는 것의 한계 -> 장고의 기능을 활용하자 - form 만들기 = model 만들기 (유사) - form.py 만들어 주는 이유? 따로 관리해 주기 위해서 만들어 주는 것임(코드 분할) models.py 혹은 views.py에 작성해도 됨 - models.py -> DB / form.py -> html - 모델을 기반으로 한 입력공간 만들기 : from django import forms.ModelForm class myForm(forms.ModelForm): class Meta: 어떤 모델을 기반으로 한 입력공간인지 그 모델 중에서 어떤 항목을 입력받을 건지 - 임의의 입력공..
Pagination * Pagination (예를 들어) 객체를 3개씩 끊어서 한 페이지에 표시 templates와 view를 건들여 줘야 함 - views.py : from django.core.paginator import Paginator 1. 무슨 객체를, 한 페이지 당 몇 개씩 페이지네이션 시킬 것인지 결정 2. 페이지 단위로 잘랐다면, 이제는(전체 데이터가 아닌) 페이지를 한 단위로 갖고 놀기 -> 페이지네이션 하기 전 데이터 뭉치 -> 무슨 객체를, 한 페이지 당 몇 개씩 실을 것인지 결정 Paginator(object,num) -> 내가 원하는 페이지 가져오기 .get_page(페이지 번호) -> html 에 띄우기(페이지 객체의 메소드 함수 + template 언어) - paginator class (여러 ..
로그인, 회원가입 * 회원가입 로그인 로그아웃 => 장고에서 제공하는 함수 이용* http 상에서 정보를 주고받는 방식(method)* https Method 정보를 주고받는 방식, method를 나누는 이유? -> method를 지정하지 않으면 GET 방식 -> 그래서 request.GET['xxx'] 로 form 입력값을 갖고온 것 -> GET 방식으로 하면 url 에 정보가 다 뜨게 됨 -> url로 직접 정보가 노출되지 않는 'POST' method -> 데이터 조회(GET), 데이터 생성(POST), 데이터 수정(PUT), 데이터 삭제(DELETE) - accounts app을 생성해 줍니다. - settings.py 에 가서 app 등록을 해 줍니다. - accounts 폴더 안에..
템플릿 상속, URL 관리 * 템플릿 상속- html 파일에서 겹치는 내용들(head, navbar 등등)을 'base.html' 파일에 넣어 준다.- 새로운 html 파일은 base.html 을 불러와서 겹치지 않는 내용만 작성한다. (작성하고픈 컨텐츠만 작성)- 코드 재사용에 유용- 일관된 UI 구성 및 변경 용이 - blogproject 최상위 폴더에 templates 폴더를 생성해 줍니다. - settings.py 의 TEMPLATES 리스트의 'DIRS' 부분을 채워 줍니다. - base.html 상위에 겹치는 코드들을 넣어 주고, 아래에 템플릿 태그를 작성해 줍니다. - 새로 만든 html 파일의 맨위에 적어 줍니다. - 겹치지 않는 내용을 템플릿 태그 안에 작성해 줍니다..
portfolio * 장고에서 다루는 파일의 종류 Static File(정적 파일) : 미리 서버에 저장되어 있는 파일, 서버에 저장된 그대로를 서비스 해주는 파일 Dynamic File(동적 파일) : 서버의 데이터들이 어느 정도 가공된 다음 서비스되는 파일 (상황에 따라 받는 내용이 달라질 수 있음) * Static File static : 프로젝트 입장에서 이미 뭔지 아는 파일(개발할 때 미리 준비해둔 파일) media : 웹 서비스 이용자들이 업로드하는 파일 - static 파일의 처리 과정 1. (app폴더 안에) static 폴더 맏늘고 그 안에 파일 넣기 2. settings.py 에 가서 알려주기 (파일들의 위치 찾기) 3. $ python manage.py collectstatic (파일들을 한 곳에 모으..
blog project (2) - 글쓰기 페이지에 들어갈 수 있게 home.html의 navbar를 수정해 줍니다. (다른 html도 수정) - new.html 을 만들어 주고 글을 쓸 수 있는 form 양식을 작성해 줍니다. - views.py 에 가서 new.html을 띄워주는 함수를 작성해 줍니다. - urls.py 에서 path도 설정해 줍니다. - 아까 채워주지 않았던 new.html의 form태그의 action 부분을 마저 채워 줍니다. - urls.py 에서 create 함수 경로를 설정해 줍니다. (path는 html을 띄우는 것이 아닌, 함수 실행을 해 주는 것입니다.) - views.py 에 가서 우선 time 함수를 사용하기 위해 import 해 줍니다. - views.py 에 create 함수를 작성해 줍니다. ..
blog project (1) - 가상환경을 키고 프로젝트 만들기 명령어를 입력해 줍니다. - 프로젝트 디렉토리로 이동을 해 주고, app을 생성해 줍니다. - settings.py 에 가서 app 생성을 알려 줍니다. - app 폴더 안에 templates 폴더를 만들고 home.html 파일을 만들어 줍니다. - home.html 파일에 내용을 입력해 줍니다. (우선 대충^^...) - views.py 에서 home.html 파일을 보여주는 home 함수를 정의해 줍니다. - urls.py 에 가서 import를 해 주고 home.html을 연결해주는 path를 설정해 줍니다. - home.html을 꾸미기 위해 부트스트랩을 사용합니다. 그러기 위해서 부트스트랩 홈페이지의 CDN을 복사합니다. - 복사한 CDN을 html 파일의 ..