웹개발 한번도 해본적 없는데...
장고는 너무 어렵다..
어쩌장고... ㅜㅜ
django-admin startproject <project name>
python manage.py startapp <app name>
서버 실행할 때
python manage.py runserver
하면 로컬 서버 http://127.0.0.1:8000 에서 열린다
url구성=protocol://서버주소:포트번호/자원
ex.http://x.x.x.x:8000/edu
환경설정 파일은 기본적으로 settings.py인데 바꿀 땐 manage.py에 DJANGO_SETTINGS_MODULE 환경변수 설정. default는 mysite의 settings.py
클라이언트요청-웹서버반응-장고프레임워크 처리
어떤 url이 들어왔을 때 어떤 view를 찾아가는지 알아야됨
1. settings.py에 ROOT_URLCONF를 제일 먼저 찾아간다
2. urls.py의 urlpatterns를 찾아서 view를 찾아감
한 프로젝트의 urls.py에 view urls를 다 가지고있으면 혼란스러우니
app마다 urls.py를 가짐
from django.urls import path, include
사용해서 확장
요청방식: GET, POST, PUT, DELET, PATCH
url에 변수를 전달할 수 있는데 path변수 타입을 변환하고싶다면
django.urls.converts모듈 사용
ex. path('test2/<int:no>/',views.text2)
ORM이란 객체 가지고 작업하는걸 뜻함!
DB에 관련된 class는 models.Model을 상속받으면 모델 객체라고 한다
Filed 생성 객체를 통해 DB처럼 필드를 만듦
settings.py의 engine이 장고와 DB를 연결
실제 mysql을 사용한다면 os의 환경변수로 설정해놓고 USER 계정 세팅해놓음
python manage.py makemigration <appname>
python manage.py migration <appname>
python manage.py createsuperuser
admin page에 접근할 관리자 계정을 생성해준다
레코드를 저장하기 위해서는 save()함수를 쓴다
shell에서 등록한 레코드를 admin 관리페이지에서 확인할 수 있다
Post 객체 생성시에 속성값을 전달해줄 수 있다
와우~~.. id값으로 DB를 조회할 수도 있다(select*랑 같은 기능)
객체의 모든 값을 불러오고 타입을 확인해봤더니 장고 QuerySet임을 확인할 수 있다.
이렇게 객체의 모든 값을 읽을 수 있다
views에 list를 생성했다
맨 밑 path의 뜻은 /밑에 페이지가 아무것도 연결안되어있으면 해당 path로 연결한다
url이 blog/ 로 끝난다면 위에서 만든 views.list로 연결된다
즉, DB에 있는 title이 불러와진다
DB의 id로 내용을 불러오는 path를 추가해줬다
만약 DB에 없는 내용을 조회하려 한다면 다음과 같이 예외처리 해줄 수 있다
from django.shortcuts import get_object_or_404
화이팅입니다~