드디어 주특기인 django 강의를 듣기 시작했다.
생각보다 너무 재밌어서 놀랐다.. 이렇게 재밌을 줄 이야
맨처음 웹개발종합반 강의 처음들었을 떄는 너무 어렵고 무슨말인지 몰랐는데 django 강의는 내용도 너무 잘 이해되고 실습하는 부분이 재밌어서 계속해서 진도를 빼고 있다.
아마 그전에 Flask를 어느정도 하고 와서 그런지 기능들이 너무편하고 조금은 신세계였던 같다.
Django의 ORM은 Python으로 데이터베이스 클래스 모델을 만들고, 만든 모델을 바탕으로 자동으로 데이터베이스를 다룰 수 있도록 도와줍니다.
객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것을 말한다.
객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용한다.
객체 모델과 관계형 모델 간에 불일치가 존재한다.
ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다.
데이터베이스 데이터 <—매핑—> Object 필드
객체를 통해 간접적으로 데이터베이스 데이터를 다룬다.
Persistant API라고도 할 수 있다.
Ex) JPA, Hibernate 등
출처: https://gmlwjd9405.github.io/2019/02/01/orm.html
INSTALLED_APPS - 장고에 설치 된 앱들
MIDDLEWARE - 사용자 요청/응답 사이에서 작동하는 시스템들
TEMPLATES - 나의 html파일을 자동으로 인식
DATABASES - 내가 사용할 데이터베이스 연동 설정
AUTH_PASSWORD_VALIDATORS - 패스워드 보안 수준 검증
LANGUAGE_CODE - 화면에 어떤 언어를 보여줄것인지
TIME_ZONE - 우리가 어떤 시간에 있는지
나는 파이참이 아닌 vs코드로 장고를 세팅해야해서 여러가지 환경을 셋팅해 주어야한다
python -m venv djangovenv
가상환경 셋팅해주고
F1 을 눌러서 Select interpreter
에서
셋팅된 가상환경으로 인터프리터 변경
터미널을 실행시켜서
python -m pip install django
설치후 cd, mkdir을 이용해서 폴더 만들고
djnago- admin startproject 프로젝트명
으로 프로젝트를 실행하면 된다.
서버실행은
python manage.py runserver
출처:https://www.notion.so/Django-2-a7851e5fbefa4f8fa7847eb8af8c7658
django-admin startapp user
을 이용하면 app을 만들 수 있다.
vs코드에서는 sqlite 를 설치하고 Ctrl + shift + p 를 눌러 열고하는 datebase를 연결해주면 끝!
데이터베이스 변경을 알려주는 명령어
python manage.py makemigrations
변경된 데이터베이스를 반영 해 주는 명령어
python manage.py migrate
둘다 입력해야 한다.
장고에서는 기본적으로 관리자 툴을 제공해준다. 너무 편한 기능이다. 관리자 계정은
python manage.py createsuperuser
를 터미널에 입력하면 만들 수 있다
# mySpartaSns/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('user.urls'))
]
메인 urls.py 에다가
user 앱의 urls.py 에 연결 시키겠다는 코드이다.
def sign_in_view(request):
if request.method == 'POST':
username = request.POST.get('username', None)
password = request.POST.get('password', None)
me = auth.authenticate(request, username=username, password=password)
if me is not None:
auth.login(request, me)
return HttpResponse(me.username)
else:
return redirect('/sign-in')
elif request.method == 'GET':
return render(request, 'user/signin.html')
def sign_up_view(request):
if request.method == 'GET':
return render(request, 'user/signup.html')
elif request.method == 'POST':
username = request.POST.get('username', None)
password = request.POST.get('password', None)
password2 = request.POST.get('password2', None)
bio = request.POST.get('bio', None)
if password != password2:
return render(request, 'user/signup.html')
else:
exist_user = get_user_model().objects.filter(username=username)
if exist_user:
return render(request, 'user/signup.html')
else:
UserModel.objects.create_user(username=username, password=password, bio=bio)
return redirect('/sign-in')
그리고 3주차 중간 부분 까지 강의를 듣고 있다. 장고가 일단 너무 편한점은, DB가 구현되어 고, 이미 만들어진 회원가입, 로그인 같은 기능들을 너무 편하게 가져다 쓸 수 있다. 또한 세션까지 해주고 비밀번호도 자동으로 해싱해준다.
그동안 Flask 에서 직접 구현해야 될 부분의 많은 부분을 지원해줘서 개발할때 확실히 편한 느낌이 많이든다. 좀더 재밌게 공부 할 수 있을 것 같다.