728x90
반응형
오늘 한 일
- 오전 장고 실강
- 오후 장고 원격 강의
수면시간 2시간대.. 두통이 너무 심해서 집중이 되지 않았다. 그래서 팀 분위기 푸는 거랑 다른 분들과 교류하는 데 집중한 날이었다. 그래도 2주차 거의 다 들었다.
오늘 마주한 에러 ⇒ git에 push하다가 마주한 403 error
- 내가 본 건 아니었고 팀원 분이 에러가 나서 같이 해결을 시도해 봤다.
- 에러 발생 이유 : get remote가 ssh만 지원하고 있는 상태인데 HTTPS 주소로 들어가 있었다.
- 해결 : config 파일 열어서 remote origin의 레포지토리 주소를 확인하고 ssh 주소로 다시 적어서 해결했다.
- 알게 된 것 : 에러에 permission이라는 키워드가 있으면 로그인이 안 돼있거나 / 다른 계정으로 돼있거나(소스트리든 깃배쉬든) 하는 경우일 가능성이 높다.
장고 실강
<aside> 💡 장고의 ⚽ 티키타카 ⚽
- 요청된 url에 맞는 함수를 views.py에서 찾아 실행한다.
- 함수가 호출하는 html에을 들여다본다.
- 그에 따라 필요한 데이터를 데이터베이스에서 찾는다.
- 해당 데이터를 html에 찍어 전달한다.
- 최종적으로 사용자에게 해당 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>
- super user 만들기 : python manage.py createsuperuser
- 패스워드는 화면에 입력이 안 되는 게 정상. 당황 ㄴㄴ
- 어드민 화면에 모델(→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에 추가 해 줍니다
- 유저의 데이터베이스 모델을 관리자 페이지에 넣고 싶다면 user 앱의 admin.py에 들어간다.
- <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을 보여준다.
- 과정
url 잇기
- 앱의 url을 원래 있던 상위 폴더의 url.py에 알려줘야 원래의 url.py이 요청이 들어왔을 때 어떤 url로 연결해줄지 판단할 수 있다.
- urls.py에 연결할 앱 폴더에 각각 urls.py 파일을 만든다.
- urls.py에 경로를 설정한다.
- # 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 연결하기
- 앱의 urls.py에 연결할 앱의 views.py 작성해준다.
- render : render를 통해 html 파일을 화면에 띄운다.
- 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')
- 작성한 views.py와 urls.py 연결해주기
- views.sign_up_view : 주소창 맨 뒤에 sign-up을 추가하면 views에 있는 sign_up_view 함수가 실행된다.
- name=’sign-up’ : 템플릿의 별명! 나중에 템플릿 언어 사용 시 주소가 바뀌어도 url을 가져올 때 코드를 바꾸지 않아도 되는 장점이 있다. → 참고 자료
- 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)
오늘 한 일
- 오전 장고 실강
- 오후 장고 원격 강의
수면시간 2시간대.. 두통이 너무 심해서 집중이 되지 않았다. 그래서 팀 분위기 푸는 거랑 다른 분들과 교류하는 데 집중한 날이었다. 그래도 2주차 거의 다 들었다.
장고 실강
<aside> 💡 장고의 ⚽ 티키타카 ⚽
- 요청된 url에 맞는 함수를 views.py에서 찾아 실행한다.
- 함수가 호출하는 html에을 들여다본다.
- 그에 따라 필요한 데이터를 데이터베이스에서 찾는다.
- 해당 데이터를 html에 찍어 전달한다.
- 최종적으로 사용자에게 해당 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>
- super user 만들기 : python manage.py createsuperuser
- 패스워드는 화면에 입력이 안 되는 게 정상. 당황 ㄴㄴ
- 어드민 화면에 모델(→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에 추가 해 줍니다
- 유저의 데이터베이스 모델을 관리자 페이지에 넣고 싶다면 user 앱의 admin.py에 들어간다.
- <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을 보여준다.
- 과정
url 잇기
- 앱의 url을 원래 있던 상위 폴더의 url.py에 알려줘야 원래의 url.py이 요청이 들어왔을 때 어떤 url로 연결해줄지 판단할 수 있다.
- urls.py에 연결할 앱 폴더에 각각 urls.py 파일을 만든다.
- urls.py에 경로를 설정한다.
- # 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 연결하기
- 앱의 urls.py에 연결할 앱의 views.py 작성해준다.
- render : render를 통해 html 파일을 화면에 띄운다.
- 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')
- 작성한 views.py와 urls.py 연결해주기
- views.sign_up_view : 주소창 맨 뒤에 sign-up을 추가하면 views에 있는 sign_up_view 함수가 실행된다.
- name=’sign-up’ : 템플릿의 별명! 나중에 템플릿 언어 사용 시 주소가 바뀌어도 url을 가져올 때 코드를 바꾸지 않아도 되는 장점이 있다. → 참고 자료
- 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 |