728x90
반응형

 

오늘 한 일


  1. 오전 장고 실강
  2. 오후 장고 원격 강의

수면시간 2시간대.. 두통이 너무 심해서 집중이 되지 않았다. 그래서 팀 분위기 푸는 거랑 다른 분들과 교류하는 데 집중한 날이었다. 그래도 2주차 거의 다 들었다.

 

오늘 마주한 에러 ⇒ git에 push하다가 마주한 403 error


  1. 내가 본 건 아니었고 팀원 분이 에러가 나서 같이 해결을 시도해 봤다.
  2. 에러 발생 이유 : get remote가 ssh만 지원하고 있는 상태인데 HTTPS 주소로 들어가 있었다.
  3. 해결 : config 파일 열어서 remote origin의 레포지토리 주소를 확인하고 ssh 주소로 다시 적어서 해결했다.
  4. 알게 된 것 : 에러에 permission이라는 키워드가 있으면 로그인이 안 돼있거나 / 다른 계정으로 돼있거나(소스트리든 깃배쉬든) 하는 경우일 가능성이 높다.

 

장고 실강


<aside> 💡 장고의 ⚽ 티키타카

  1. 요청된 url에 맞는 함수를 views.py에서 찾아 실행한다.
  2. 함수가 호출하는 html에을 들여다본다.
  3. 그에 따라 필요한 데이터를 데이터베이스에서 찾는다.
  4. 해당 데이터를 html에 찍어 전달한다.
  5. 최종적으로 사용자에게 해당 html을 띄워 보여준다.

</aside>

  • 프레임워크 : 필요한 기능을 미리 만들어 두어 개발에 도움을 주는 도구
  • Django vs. Flask : Django는 Flask에 비해 무겁지만 그만큼 기능이 많다.
  • Templete Engine : HTML에서 파이썬처럼 for문이나 if문, 변수를 쓸 수 있게 하는 것
  • 패키지 : 파이썬 개발을 돕는 외부 기능으로, 설치해야 사용할 수 있다.
  • 가상환경
    • 일종의 패키지를 담는 통으로, 작업 환경을 분리하기 위해 독립된 실행 환경을 만든다.
    • 가상환경에 설치한 패키지는 가상환경에서만 영향력을 미치는 방식이다.
    • 적용 범위 : 가상환경이 위치한 폴더 내부
  • pip : 패키지를 삭제 / 추가 / 업그레이드 할 수 있는 일종의 패키지 관리자

for 명렁어 비고

가상환경 만들기 python -m venv <가상환경 이름> -m에서 m은 make,
venv는 virtual environment의 약자    
활성화 MAC : source <가상환경 이름>/bin/activate  
WINDOW : source <가상환경 이름>/Scripts/activate bin 폴더 안의 activate를 실행해준다는 뜻!  
괄호 안에 (가상환경이름)이 뜨면 잘 된 것 in window    
패키지 설치 pip install <패키지 이름>  
패키지 삭제 pip uninstall <패키지 이름>  
설치된 패키지 이름 및 버전 조회 pip freeze  
가상환경 끄기 deactivate  
requirements.txt로 내보내기 pip freeze >> requirements.txt 설치된 패키지의 목록을 내보내기.

뒤에 파일명.txt를 하면 되는데 requirements가 국룰 | | requirements.txt 안에 적힌 파일 설치하기 | pip install —r requirements.txt | ec2 한방에 설치하기는 원리는 같지만 VM에 더 가까움 → 다른 사람이 설정한 가상환경을 그대로 따라 설치하기 좋다. |

앱 생성


  • 앱 생성하기 : django-admin startapp <앱이름>
  • 앱을 만들었으면 settings.py의 설정들 중 INSTALLED_APPS에 해당 앱을 추가해 주어야 한다. → 앱 이름으로 추가.
  • ORM - Object Relational Mapping : 데이터베이스를 하나의 객체 덩어리로 보고 데이터베이스의 데이터들을 SQL 언어가 아닌 클래스로 표현 및 사용할 수 있도록 해준다.
  • 필요한 정보들을 models.py에 작성한다. ex) 유저의 정보라면 user 앱 아래의 models.py에 작성
    • class Meta : : 데이터베이스에 정보를 넣어주는 역할
    • db_table : 데이터베이스의 테이블 이름을 지정해준다.
  • #user/models.py from django.db import models # Create your models here. class UserModel(models.Model): class Meta: db_table = "my_user" username = models.CharField(max_length=20, null=False) password = models.CharField(max_length=256, null=False) bio = models.CharField(max_length=256, default='') created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True)
  • 모델 필드 : models를 사용해 각 요소의 데이터 형식을 지정하고 필드에 제한을 둔다.
    • 문자열 : CharField, TextField
    • 시간: DateTimeField, DateField, TimeField
    • 숫자 : IntegerField, FloatField
    • 다른 테이블과 연관을 지어 줄 때 : ForeignKey\

데이터베이스


  • 모델 데이터베이스에 넣기
    • 데이터베이스 변경을 알리는 명령어 : python manage.py makemigrations
    • 변경된 데이터베이스를 반영하는 명령어 : python manage.py migrate
  • 다른 예시 → 질문
    • user.models : user 앱에 있는 models를 가져와 사용하겠다.
    • UserModel : models 중에 이름이 UserModel인 친구를 가지고 오겠다는 뜻
    • ForeignKey : 외부 모델을 가져와 사용하겠다는 뜻
    • ForeignKey(UserModel : 불러온 UserModel이 ForeignKey 안에 들어있다.
  • # tweet/models.py from django.db import models from user.models import UserModel #질문 # Create your models here. class TweetModel(models.Model): class Meta: db_table = "tweet" author = models.ForeignKey(UserModel, on_delete=models.CASCADE) content = models.CharField(max_length=256) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True)

Admin


  • 어드민 페이지 : http://127.0.0.1:8000/admin</aside>
    1. super user 만들기 : python manage.py createsuperuser
    2. 패스워드는 화면에 입력이 안 되는 게 정상. 당황 ㄴㄴ
    3. 어드민 화면에 모델(→models.py) 등록하기
      • 유저의 데이터베이스 모델을 관리자 페이지에 넣고 싶다면 user 앱의 admin.py에 들어간다.
        • from django.contrib import admin : 장고에서 admin 툴을 사용하겠다.
        • .models : 동일한 위치에 있는 models라는 파이썬 파일을 불러오겠다.
        • import : 원래 있던 거 말고 내가 생성한 모델을 가져온다.
        • admin.site.register : 가져온 UserModel을 관리자 계정에 넣어 준다.
        • UserModel : 클래스명
      • from django.contrib import admin from .models import UserModel # Register your models here. admin.site.register(UserModel) # 이 코드가 나의 UserModel을 Admin에 추가 해 줍니다
  • <aside> 💡 1) 데이터 베이스에 적용할 유저 모델을 클래스에서 작성하고 2) 서버 종료 3) 장고에 명령어 2개로 데이터베이스에 적용하면 4) 적용된 것들이 관리자 페이지에 나타난다.

HTML 작성하기


  • templates 폴더를 만든다. 가령 회원가입이나 로그인과 같은 기능은 유저와 관련된 기능이니까 user폴더에 묶인다.
  • {% extends ‘base.html’ %} : base.html 파일에 추가해주겠다는 뜻으로, base.html에 해당 파일을 추가해 확장하겠다는 뜻이다.
  • → html 문법 ‘django 템플릿’ : html을 중복 작성하지 않도록 html 파일을 이어주는, 그리고 html 파일에 파이썬의 기능들을 추가해주는 문법

url - view - template 동작


  • url : html 파일을 화면에 보여줄 수 있도록 이어준다
  • view : 실질적으로 프로그램이 동작하는 부분으로, 접속한 url과 연동되면서 html이 url에서 기능하도록 도와준다. template을 보여준다.
  • 과정
    1. 사용자가 url 요청 → 크롬/사파리 등의 인터넷 브라우저
    2. mySpartaSns에 요청이 접수 → settings.py가 있는 가장 처음 작성한 앱의 urls.py
    3. 등록된 url을 찾기 → urls.py에 연결 된 앱에 생성 한 urls.py
    4. 해당 url에 등록 된 view를 찾기

url 잇기


  • 앱의 url을 원래 있던 상위 폴더의 url.py에 알려줘야 원래의 url.py이 요청이 들어왔을 때 어떤 url로 연결해줄지 판단할 수 있다.
  1. urls.py에 연결할 앱 폴더에 각각 urls.py 파일을 만든다.
  2. urls.py에 경로를 설정한다.
  3. # mySpartaSns/urls.py from django.contrib import admin from django.urls import path, **include** urlpatterns = [ path('admin/', admin.site.urls), **path('', include('user.urls'))** ]

완성! 이제 url에 맞는 view를 작성해준다.

앱의 urls.py과 앱의 views.py 연결하기


  1. 앱의 urls.py에 연결할 앱의 views.py 작성해준다.
    • render : render를 통해 html 파일을 화면에 띄운다.
  2. from django.shortcuts import render # Create your views here. def sign_up_view(request): return render(request, 'user/signup.html') def sign_in_view(request): return render(request, 'user/signin.html')
  3. 작성한 views.py와 urls.py 연결해주기
    • views.sign_up_view : 주소창 맨 뒤에 sign-up을 추가하면 views에 있는 sign_up_view 함수가 실행된다.
    • name=’sign-up’ : 템플릿의 별명! 나중에 템플릿 언어 사용 시 주소가 바뀌어도 url을 가져올 때 코드를 바꾸지 않아도 되는 장점이 있다. → 참고 자료
  4. from django.urls import path from . import views urlpatterns = [ path('sign-up/', views.sign_up_view, name='sign-up'), path('sign-in/', views.sign_in_view, name='sign-in'), ]

220922 Today I Learned (TIL)

오늘 한 일


  1. 오전 장고 실강
  2. 오후 장고 원격 강의

수면시간 2시간대.. 두통이 너무 심해서 집중이 되지 않았다. 그래서 팀 분위기 푸는 거랑 다른 분들과 교류하는 데 집중한 날이었다. 그래도 2주차 거의 다 들었다.

장고 실강


<aside> 💡 장고의 ⚽ 티키타카

  1. 요청된 url에 맞는 함수를 views.py에서 찾아 실행한다.
  2. 함수가 호출하는 html에을 들여다본다.
  3. 그에 따라 필요한 데이터를 데이터베이스에서 찾는다.
  4. 해당 데이터를 html에 찍어 전달한다.
  5. 최종적으로 사용자에게 해당 html을 띄워 보여준다.

</aside>

  • 프레임워크 : 필요한 기능을 미리 만들어 두어 개발에 도움을 주는 도구
  • Django vs. Flask : Django는 Flask에 비해 무겁지만 그만큼 기능이 많다.
  • Templete Engine : HTML에서 파이썬처럼 for문이나 if문, 변수를 쓸 수 있게 하는 것
  • 패키지 : 파이썬 개발을 돕는 외부 기능으로, 설치해야 사용할 수 있다.
  • 가상환경
    • 일종의 패키지를 담는 통으로, 작업 환경을 분리하기 위해 독립된 실행 환경을 만든다.
    • 가상환경에 설치한 패키지는 가상환경에서만 영향력을 미치는 방식이다.
    • 적용 범위 : 가상환경이 위치한 폴더 내부
  • pip : 패키지를 삭제 / 추가 / 업그레이드 할 수 있는 일종의 패키지 관리자

for 명렁어 비고

가상환경 만들기 python -m venv <가상환경 이름> -m에서 m은 make,
venv는 virtual environment의 약자    
활성화 MAC : source <가상환경 이름>/bin/activate  
WINDOW : source <가상환경 이름>/Scripts/activate bin 폴더 안의 activate를 실행해준다는 뜻!  
괄호 안에 (가상환경이름)이 뜨면 잘 된 것 in window    
패키지 설치 pip install <패키지 이름>  
패키지 삭제 pip uninstall <패키지 이름>  
설치된 패키지 이름 및 버전 조회 pip freeze  
가상환경 끄기 deactivate  
requirements.txt로 내보내기 pip freeze >> requirements.txt 설치된 패키지의 목록을 내보내기.

뒤에 파일명.txt를 하면 되는데 requirements가 국룰 | | requirements.txt 안에 적힌 파일 설치하기 | pip install —r requirements.txt | ec2 한방에 설치하기는 원리는 같지만 VM에 더 가까움 → 다른 사람이 설정한 가상환경을 그대로 따라 설치하기 좋다. |

앱 생성


  • 앱 생성하기 : django-admin startapp <앱이름>
  • 앱을 만들었으면 settings.py의 설정들 중 INSTALLED_APPS에 해당 앱을 추가해 주어야 한다. → 앱 이름으로 추가.
  • ORM - Object Relational Mapping : 데이터베이스를 하나의 객체 덩어리로 보고 데이터베이스의 데이터들을 SQL 언어가 아닌 클래스로 표현 및 사용할 수 있도록 해준다.
  • 필요한 정보들을 models.py에 작성한다. ex) 유저의 정보라면 user 앱 아래의 models.py에 작성
    • class Meta : : 데이터베이스에 정보를 넣어주는 역할
    • db_table : 데이터베이스의 테이블 이름을 지정해준다.
  • #user/models.py from django.db import models # Create your models here. class UserModel(models.Model): class Meta: db_table = "my_user" username = models.CharField(max_length=20, null=False) password = models.CharField(max_length=256, null=False) bio = models.CharField(max_length=256, default='') created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True)
  • 모델 필드 : models를 사용해 각 요소의 데이터 형식을 지정하고 필드에 제한을 둔다.
    • 문자열 : CharField, TextField
    • 시간: DateTimeField, DateField, TimeField
    • 숫자 : IntegerField, FloatField
    • 다른 테이블과 연관을 지어 줄 때 : ForeignKey\

데이터베이스


  • 모델 데이터베이스에 넣기
    • 데이터베이스 변경을 알리는 명령어 : python manage.py makemigrations
    • 변경된 데이터베이스를 반영하는 명령어 : python manage.py migrate
  • 다른 예시 → 질문
    • user.models : user 앱에 있는 models를 가져와 사용하겠다.
    • UserModel : models 중에 이름이 UserModel인 친구를 가지고 오겠다는 뜻
    • ForeignKey : 외부 모델을 가져와 사용하겠다는 뜻
    • ForeignKey(UserModel : 불러온 UserModel이 ForeignKey 안에 들어있다.
  • # tweet/models.py from django.db import models from user.models import UserModel #질문 # Create your models here. class TweetModel(models.Model): class Meta: db_table = "tweet" author = models.ForeignKey(UserModel, on_delete=models.CASCADE) content = models.CharField(max_length=256) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True)

Admin


  • 어드민 페이지 : http://127.0.0.1:8000/admin</aside>
    1. super user 만들기 : python manage.py createsuperuser
    2. 패스워드는 화면에 입력이 안 되는 게 정상. 당황 ㄴㄴ
    3. 어드민 화면에 모델(→models.py) 등록하기
      • 유저의 데이터베이스 모델을 관리자 페이지에 넣고 싶다면 user 앱의 admin.py에 들어간다.
        • from django.contrib import admin : 장고에서 admin 툴을 사용하겠다.
        • .models : 동일한 위치에 있는 models라는 파이썬 파일을 불러오겠다.
        • import : 원래 있던 거 말고 내가 생성한 모델을 가져온다.
        • admin.site.register : 가져온 UserModel을 관리자 계정에 넣어 준다.
        • UserModel : 클래스명
      • from django.contrib import admin from .models import UserModel # Register your models here. admin.site.register(UserModel) # 이 코드가 나의 UserModel을 Admin에 추가 해 줍니다
  • <aside> 💡 1) 데이터 베이스에 적용할 유저 모델을 클래스에서 작성하고 2) 서버 종료 3) 장고에 명령어 2개로 데이터베이스에 적용하면 4) 적용된 것들이 관리자 페이지에 나타난다.

HTML 작성하기


  • templates 폴더를 만든다. 가령 회원가입이나 로그인과 같은 기능은 유저와 관련된 기능이니까 user폴더에 묶인다
  • {% extends ‘base.html’ %} : base.html 파일에 추가해주겠다는 뜻으로, base.html에 해당 파일을 추가해 확장하겠다는 뜻이다.
  • → html 문법 ‘django 템플릿’ : html을 중복 작성하지 않도록 html 파일을 이어주는, 그리고 html 파일에 파이썬의 기능들을 추가해주는 문법

url - view - template 동작


  • url : html 파일을 화면에 보여줄 수 있도록 이어준다
  • view : 실질적으로 프로그램이 동작하는 부분으로, 접속한 url과 연동되면서 html이 url에서 기능하도록 도와준다. template을 보여준다.
  • 과정
    1. 사용자가 url 요청 → 크롬/사파리 등의 인터넷 브라우저
    2. mySpartaSns에 요청이 접수 → settings.py가 있는 가장 처음 작성한 앱의 urls.py
    3. 등록된 url을 찾기 → urls.py에 연결 된 앱에 생성 한 urls.py
    4. 해당 url에 등록 된 view를 찾

url 잇기


  • 앱의 url을 원래 있던 상위 폴더의 url.py에 알려줘야 원래의 url.py이 요청이 들어왔을 때 어떤 url로 연결해줄지 판단할 수 있다.
  1. urls.py에 연결할 앱 폴더에 각각 urls.py 파일을 만든다.
  2. urls.py에 경로를 설정한다.
  3. # mySpartaSns/urls.py from django.contrib import admin from django.urls import path, **include** urlpatterns = [ path('admin/', admin.site.urls), **path('', include('user.urls'))** ]

완성! 이제 url에 맞는 view를 작성해준다.

앱의 urls.py과 앱의 views.py 연결하기


  1. 앱의 urls.py에 연결할 앱의 views.py 작성해준다.
    • render : render를 통해 html 파일을 화면에 띄운다.
  2. from django.shortcuts import render # Create your views here. def sign_up_view(request): return render(request, 'user/signup.html') def sign_in_view(request): return render(request, 'user/signin.html')
  3. 작성한 views.py와 urls.py 연결해주기
    • views.sign_up_view : 주소창 맨 뒤에 sign-up을 추가하면 views에 있는 sign_up_view 함수가 실행된다.
    • name=’sign-up’ : 템플릿의 별명! 나중에 템플릿 언어 사용 시 주소가 바뀌어도 url을 가져올 때 코드를 바꾸지 않아도 되는 장점이 있다. → 참고 자료
  4. from django.urls import path from . import views urlpatterns = [ path('sign-up/', views.sign_up_view, name='sign-up'), path('sign-in/', views.sign_in_view, name='sign-in'), ]
반응형

'Programming > TIL and WIL' 카테고리의 다른 글

WIL  (1) 2022.09.26
220923, 220924 Today I Learned (TIL)  (0) 2022.09.24
220921 Today I Learned (TIL)  (0) 2022.09.22
220920 Today I Learned  (1) 2022.09.20
220919 Today I Learned (TIL)  (1) 2022.09.19

+ Recent posts