2019.05.13 장고 프로젝트 S3로 연동하기

s3 셋팅 - url 있는 형태로 (url 연결 & api 키 연결)

버킷 만들기

  1. 버킷 만들기(사이트 주소 넣어서 만들기)
스크린샷 2019-05-13 오후 9 46 03
  • 버킷이름은 꼭 이름.사이트주소.com과 같이 특정 사이트 이름을 넣어서 만들어준다.
    버킷의 퍼브릭 액세스 설정 : 다 해제를 해준다.
스크린샷 2019-05-13 오후 9 48 17
  • s3에서 사용자에게 바로 줄 수 있도록 만든다.
스크린샷 2019-05-13 오후 9 49 26
  1. 버킷 정적 웹사이트 호스팅 설정 : route53에서 확인할 수 있도록 해준다.
  2. 인덱스 문서 및 오류 문서를 그대로 따라 쳐준다.

Route53 주소 연결

스크린샷 2019-05-13 오후 9 53 47
  1. 레코드 세트 생성
  2. 본인이 등록했던 s3 버킷에 연결해주기
  3. s3에 파일 올리고 확인해보기

setting.py에 s3 관련 설정해주기

  1. assert_storage.py 생성
스크린샷 2019-05-13 오후 9 56 52
  1. bucket_name과 custom_domain을 활용하여 static과 media를 따로 저장할 수 있다.
  1. storages 설치 : pip install django-storages
  2. boto3 설치 : pip install boto3
  3. aws셋팅
스크린샷 2019-05-13 오후 9 57 49
  1. python manage.py collectstatic (static 파일 다 업로드 하기)
  2. 초기화 : python manage.py migrate
    1. 만약에 안될 시 보안그룹의 IP 포트를 확인한다.

2019.05.09 heroku를 활용한 북마크 배포하기

헤로쿠를 통한 북마크 앱 배포하기

헤로쿠 배포 순서

  1. 헤로쿠 설치하기 The Heroku CLI | Heroku Dev Center
  2. 헤로쿠 추가 필수 모델 설치하기
  3. requirements.txt 파일만들기
  4. 모듈 설정 : setting.py
  5. Procfile 만들기
  6. runtime.txt 만들기
  7. gitignore 만들기
  8. 헤로쿠에 업로드
  9. 헤로쿠 초기화

1. 헤로쿠 설치하기

  1. [The Heroku CLI | Heroku Dev Center] 접속(https://devcenter.heroku.com/articles/heroku-cli)
  2. 터미널 설치 명령어
brew tap heroku/brew && brew install heroku 
  1. 설치 확인
    1. 터미널 : heroku --version

2. 헤로쿠 추가 모듈 설치하기

  1. 추가 모듈 설치 (pip install 모듈명)
    1. dj-database-url : 데이터베이스 관련 옵션을 변수로 쉽게 접근할 수 있게 해주는 유틸리티
    2. gunicorn : wsgi용 미들웨어 - 웹서버와 장고 사이의 다리 역할
    3. whitenoise : static 파일 서빙용 미들웨어
    4. psycopg2-binary : postgreSQL용 드라이버

3. requirements.txt 파일 만들기

freeze > requirements.txt

4. 모듈 설정

  1. DEBUG = False
  2. ALLOWED_HOST = ['*']
  3. 미들 웨어 추가
    1. 정적파일을 사용하기 위해 미들웨어를 추가하고 STATIC ROOT를 추가해줘야 한다.
    2. 'whitenoise.middleware.WhiteNoiseMiddleware'
  4. STATIC ROOT 추가 : 스태틱 파일을 저장할 경로 설정
    1. STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
  5. 테이터 베이스 옵션 추가(헤로쿠가 알아서 해주는데 무엇을 해줄지 적는다.)
    1. DATABASES 아래에 추가
B43A59AA-6CFC-4541-809D-06DB07F83821

5. Procfile 만들기

  • 최상단에 Procfile 생성
  • web : gunicorn config.wsgi 입력

6. runtime.txt 만들기

  • 최상단에 runtime.txt 만들기
  • python-3.7.0 적어주기

7. gitignore 만들기

*.pvc
*~
/venv
__pycache__
db.sqlite3
.DS_Store

8. 헤로쿠에 업로드

  1. 헤로쿠 로그인
    1. 터미널 : heroku login
  2. git init
  3. git add -A
  4. git commit -m "heroku commit"
  5. heroku create django-bookmarkproject
  6. git push heroku master

9. 헤로쿠 초기화

  1. 헤로쿠 초기화
    1. 데이터베이스 초기화
      1. heroku run python manage.py migrate
    2. 슈퍼 유저 생성
      1. heroku run python manage.py createsuperuser
  2. 헤로쿠 열어보기
    1. heroku open

###2019.03.04 TIL

(TIL은 스스로 이해한 것을 바탕으로 정리한 것으로 오류가 있을 수 있습니다)

파이썬 기본 문법

========================
1.기본 문법(string,list)


python 기본 문법의 시작이다.

오늘은 string/list으로 나누어 기본 문법을 정리해보려고 한다.

String

String은 기본적으로 immutable로서 변경할 수 없다.(tuple와 마찬가지).

string

String은 index를 사용할 수 있으며 "abcdef"[0],

String은immutable하므로 보이는 형태라도 변경하기 위한 방법

  1. slicing

    • b = a[0:2] + "x" + a[3:]
  2. replace ---> 특정 문자 찾아 바꾸기

    • b = a.replace("a", 'x')
  3. a.split()

    • ---> 공백을 뛰어서 list로 바꿈

위와 같은 방법으로 변경할 수 있다.

string에서 빈칸을 없애는 방법

  1. a.lstrip() ---> 왼쪽 공백 제거
  2. a.rstrip() ---> 오른쪽 공백 제거
  3. a.strip() ---> 양쪽 공백 제거
  4. a.replace(" ",'') ---> 띄어쓰기 모두 제거

위의 4가지 방법을 쓸 수 있다.

string의 길이, 요소 파악

  • len(a)를 사용한다

  • a.count("a") ---> 특정 요소의 갯수 파악

string 내에서 특정한 값을 대입 혹은 바꿔야 할 때

  1. format

    • "{},{}".format(a, b)
  2. 포매팅

    • "I love %s" %you

string내에서의 join

  1. "str".join(list)

    • list의 요소마다 str을 넣어서 string으로 변경 . ---> 단 list의 요소는 다 문자로 구성되어야 함
  2. "str".join(str)

    • str의 사이마다 str을 넣어서 변경

list

정의 : python에서 list는 다양한 타입의 변수 모임이라고 본다

list

li = []
li = [ 1, "b", (1,2,3) ]

Number, string, tuple 등 다양한 타입이 모두 올 수 있다.

요소 삭제

  1. li[1:3] = [] ---> index 활용 삭제

  2. del li[0] ---> 특정 인덱스 요소 삭제

  3. li.remove() ---> 특정 요소 직접 삭제

요소 추가

  1. li.append() ---> 제일 뒤에 1개의 특정 요소 추가

  2. li.insert(index, ele) ---> 특정 인덱스에 원하는 요소 추가

  3. li.extend([ ]) ---> list 요소들을 한번에 추가

요소 추출

  1. li[0] ---> 인덱싱

  2. li[0:2] ---> 슬라이싱

  3. li.index("ele") ---> 특정 요소의 인덱스 파악

  4. li.count("ele") ---> 특정 요소의 갯수 파악

  5. li.pop() ---> 특정 인덱스의 요소 추출 및 제거(없을시 가장 뒷 요소)

요소 수정

  1. li[0] = "1" ---> 하나의 값 수정

  2. li[0:2] = [1, 2, 3] ---> 해당 슬라이싱 만큼 특정 값 추가

요소 정렬

  1. li.sort() ---> 원본이 바뀌는 정렬

  2. li.reverse() ---> 원본을 거꾸로

  3. li.sort(reverse = True)

  4. len(a)

  5. sorted(li) ---> 원본이 바뀌지 않는 정렬

2019.05.07 인스타그램 클론 코딩하기(회원가입 기능 구현하기1)

인스타그램 만들기(17)

회원가입 기능 구현하기(5~6)

모델 폼을 통해 회원가입 기능 구현하기

  1. views를 통해 로직 구현하기
    1. POST형태로 받을 때와 처음 실행할 때 화면 구현
    2. render의 특징
    3. POST형태의 데이터 저장하기
  2. 템플릿 만들기
  3. url 연결하기
  4. 비밀번호 암호화하기
  5. forms.py를 구현하여 views.py를 간락햐게 만들기
    1. forms.py 오버라이딩하기
    2. views.py 간략히 수정하기
    3. 중복 입력 받기(commit=False)
    4. signup_complete에 회원가입한 사람 이름 띄어주기
    5. form을 통해 받은 자료 암호화하기
      1. set_password
  6. 비밀번호 재입력창 만들기
    1. 비밀번호 중복 확인하기
  7. 해로쿠를 통해 서버 배포하기

5. forms.py를 구현하여 views.py 간략하게 만들기

  1. forms.py 구현하기
E405F6FA-56D6-42DA-AC56-1E6EA71807CF
  • forms.py 생성
  • class Meta를 활용해 입력 받을 필드들을 나열한다.
  • password에 대해서는 입력시 ****가 나오도록 하기 위해 커스터마이징 한다.

모델폼 일반 보기

  • class Meta 활용
  • 다 가지고 오려면 "_all_"
  • 우리가 views.py에 만든 것은 signup.html에 추가되는 것이다.
  • 따라서 우리가 만들어 준 것은 지워주면 된다.
  • fields에는 해당 모델에 대해 입력 받을 필드들을 나열한다.
    • 추가필드도 포함될 수 있다.
      • 필드 목록과 추가 필드가 겹치면 오버라이드 한다.(password)
  • fields에 써진 순서대로 출력된다.
  • 이후에 해야 하는 것들
    • 필드의 기본값 설정하기(상품 장바구니 기본값 1로 셋팅)
    • placeholder 설정법
    • css class 설정법
    • Validator 설정법
    • 커스텀 필드 만드는 법
    • 헬프 텍스트 설정법 ( 이거는 나도 꼭 필요하다!! )
  1. views.py 간략하게 만들기(중복 저장 피하기)
CE37BDBF-0AFA-4707-9D4A-EED2900D6C1D
  • from .forms import SignUpForm을 가지고 온다.
  • POST일 때 SignUpForm(request.POST)인 객체를 생성하고
  • 그것이 유효하다면 user_instance에 signup_form을 저장한다.
  • 하지만 아래에서 또 한번 저장이 있으므로 중복 저장을 피하기 위해 commit=False를 입력한다.
  • set_password 및 cleaned_data를 통해 유효한 문자만 남긴 상태를 저장한다. 또한 암호화한다.
  • render 뒤쪽에 {'username':user_instance.username'}을 넣어서 username이 나오도록 구현해준다.

6. 비밀번호 재입력창 만들기

  1. form 커스터마이징
ADE345FE-75B8-4AF8-AE36-A6C017B28C4A
  • Repeat_password를 fields에 추가해 준뒤에 폼에 없는 field 이므로 커스터마이징해준다.
  • clean_[필드명]을 통해 cleaned_data를 받아오고 이 받아온 데이터들 중 'password'와 'Repeat_password'를 확인하여서 일치 하지 않으면 에러 메시지를 전송한다.
  • 일치하면 일반적으로 'Repeat_password'를 반환한다.

2019.05.07 인스타그램 클론 코딩하기(회원가입 기능 구현하기1)

인스타그램 만들기(16)

회원가입 기능 구현하기(1~4)

모델 폼을 통해 회원가입 기능 구현하기

  1. views를 통해 로직 구현하기
    1. POST형태로 받을 때와 처음 실행할 때 화면 구현
    2. render의 특징
    3. POST형태의 데이터 저장하기
  2. 템플릿 만들기
  3. url 연결하기
  4. 비밀번호 암호화하기
  5. forms.py를 구현하여 views.py를 간락햐게 만들기
    1. forms.py 오버라이딩하기
    2. views.py 간략히 수정하기
    3. 중복 입력 받기(commit=False)
    4. signup_complete에 회원가입한 사람 이름 띄어주기
    5. form을 통해 받은 자료 암호화하기
      1. set_password
  6. 비밀번호 재입력창 만들기
    1. 비밀번호 중복 확인하기
  7. 해로쿠를 통해 서버 배포하기

1. views.py를 통해 로직 구현하기

2FD6CE77-002F-4EF9-9FB0-F3A94B6A8BA4
  1. 입력 방식이 POST로 오면 해당 정보들을 get을 통해 받고
  2. User() 객체를 만들어서 해당 정보들을 user에 넣고 저장해준다.
  3. 그리고 render를 통해 signup_complete.html을 불러온다.
  4. else: 그렇지 않으면 (기본적으로 보여지는 형태)
  5. context_values를 dictionary 형태로 만들고
  6. render를 통해 signup.html로 옴기고, context_values를 signup.html에 포함시킨다.
  7. signup.html에 {{ form }} 의 형태가 있으면 'this is form'을 불러온다.

render의 특징

  1. render란 무엇인가? (3가지를 한번에 해결해준다)
    1. 템플릿 불러오기
    2. 템플릿 랜더링 하기
      1. context_value를 해당 템플릿에 끼워넣어준다.
    3. HTTP Response하기
      1. 완료된 내용을 화면에 띄어준다.

2. 템플릿 만들기

  1. signup.html 구현하기
998AD2B8-73D8-4557-B3E5-421706DF7247
  • input태그를 활용하여 정보를 넣을 수 있게 하고 name을 넣어서 view와 일치되도록 한다.
  • method는 post 형식으로 하여서 views에서 requests==post 라는 것에 성립되도록 구현한다.
  1. signup_complete.html 구현하기
AC0E7AE6-3923-4C8D-A29B-F355A7CECC99
  • 로그인이 잘 되었다는 문구를 띄어주고
  • login url을 연결해줘서 login 하는 창으로 이동하도록 해준다.

3. url 연결하기

1E80ECA8-BA37-4434-BD0E-8F240AE8BA4D
  • path('signup/', signup, name ='signup') 연결해주기

4. 비밀번호 암호화히기(views.py 수정)

스크린샷 2019-05-07 오후 7 52 04
  • user.password = password 수정
  • user.set_password(password) 로 수정해줌으로서 admin에 들어가서 비밀번호가 잘 설정된 것을 확인할 수 있다.

+ Recent posts