msg ctf 백엔드로 참여하게 되었는데요
백엔드에 대한 기초 쌓기!
하이퍼 텍스트: 링크를 따라가며 이동하는 임의적 나열형 구조


클라이언트 웹서버 was와 DB의 상호 작용
1. 추천 위키독스 강의 목록
🥇 1순위 추천: 점프 투 장고 (Jump to Django)
주소: https://wikidocs.net/book/4223
점프 투 장고
**점프 투 장고 종이 책 출간 !! (2020.12)** * [책 구입 안내](https://wikidocs.net/105844) "점프 투 장고"는 "파이보"라는 …
wikidocs.net
이거를 이번주 공부를 해봐야죠

이 명령어를 통해 pybo 앱 생성하기

그럼 이렇게 생김
- migrations : 파일이 아닌 디렉터리이며, 장고가 데이터베이스 테이블을 생성하고 수정하기 위한 파일들을 이곳에서 관리한다.
- admin.py : 장고 관리자 화면을 구성하는 파일이다. 이곳에 코드를 추가하여 관리자 화면을 제어할 수 있다.
- apps.py : 앱의 구성 정보를 정의하는 파일이다. (파이보 프로젝트에서 이 파일을 수정할 일은 없다.)
- models.py : 데이터베이스 모델을 정의하는 파일이다.
- tests.py : 앱을 테스트할 때 사용하는 파일이다.
- views.py : 앱의 기능을 구현하는 파일이다. 앞으로 가장 많이 사용할 파일이다.

로컬 서버 실행해보기
로컬 서버의 정의
로컬 서버는 인터넷 상의 외부에 있는 컴퓨터가 아니라, 현재 자신이 직접 사용하고 있는 컴퓨터나 같은 내부 네트워크(LAN) 안에 구축된 서버를 뜻합니다. 쉽게 말해 '내 컴퓨터를 통째로, 혹은 그 일부를 서버로 사용하는 것이다

실제로 서버를 실행해보았는데
점프 투 장고와 동일하게 url에 대한 매핑이 없기떄문에 발생한 오류이다

링크를 지정해주기 윟
from pybo import views와
path()머시기를 적어주는데
이 의미를 정리해보자
pybo/ url이 요청이되면 views.index를 호출하라는 매핑을 urlpatterns에 추가를 해주는 것이다
path함수(?)의 기능을 알 수 있는데 pybo/첫번째 인수를 url을 요청받으면 views.index를 호출하라는 매핑이다
자 그럼 views.py파일을 작성해야할텐데

이 코드 그대로 복붙

내가쓴게 그대로 보이는느김 뭔가 프론트 같다
HttpResponse는 요청에 대한 응답을 할때 사용한다
여기서는 문자열을 출력하기 위해 사용되었따

실제로 코드를 작성해보니 이 과정이 제대로 이해가 됐다

그다음으로 진행하ㅣ 위해서 다음과 같이 바꿔준다
이건또 뭔말이냐면 pybo 로 시작하는 페이지를 요청하면 pybo/urls.py 파일의 매핑정보를 읽어ㅓㅅ 처리하는 것이다
이렇게 url분리를 통해 프젝 구조를 정리하고 각 앱이 독
이제 모델에 대한 내용

settings.py에 보면 db에 대한 내용도 잇
SQLite에 대하여
SQLite는 주로 개발용이나 소규모 프로젝트에서 사용되는 가벼운 파일 기반 데이터베이스이다. 개발 단계에서는 SQLite를 사용해 빠르게 개발하고, 실제 운영 시스템에서는 더 규모 있는 데이터베이스를 사용하는 것이 일반적인 패턴이다.
기본 가벼운 sql느낌
장고의 큰 장점 중 하나는 테이블 작업을 위해 직접 쿼리문을 작성하거나 실행할 필요가 없다는 점이다.

이제 모델을 작성해볼텐데
질문과 답변을 위한 데이터 모델이 필요ㅎ다

models.py에 class로 모델을작성하면된
그ㅡ리고 작성한 모델을 사용하여 테이블을 만드렁야한

setting에 추가하기
uv run manage.py makemigrations 명령을 실행
makemigrations 명령은 모델을 생성하거나 모델에 변경 사항이 있을 경우 실행해야 하는 명령이다
장고셸도 사용 가능
uv run manage.py shell

오 이렇게 질문 저장된 모.습
장고 관리자
일단 슈퍼유저를 설정해둬야한

파워셸에createsuperuser를 입력한다

/admin으로 로컬 서버를 열어서 들어가면 다음과 같이 생성된것을 확인할 수 있ek

오 이렇게 로그인도 가능하다
이게 바로 장고 관리
앞에서 question모델을 만들어 두엇

admin.py에 아래 두줄을 추가하엿더니 그 admin페이지에 question이 생긴것을 확인할 수 있다

검색창까지 만든 모습
template도 만드는데
C:\jumptoDjango
├─ config
│ ├─ __init__.py
│ ├─ settings.py
│ ├─ urls.py
│ ├─ asgi.py
│ └─ wsgi.py
│
├─ pybo
│ ├─ migrations
│ │ ├─ __init__.py
│ │ └─ 0001_initial.py
│ │
│ ├─ __init__.py
│ ├─ admin.py
│ ├─ apps.py
│ ├─ models.py
│ ├─ tests.py
│ ├─ urls.py
│ └─ views.py
│
├─ templates !!!이게 새롭게 생긴부분!!
│ └─ pybo
│ └─ question_list.html
│
├─ db.sqlite3
├─ manage.py
├─ pyproject.toml
├─ uv.lock
├─ README.md
├─ main.py
├─ .gitignore
└─ .python-version
현재는 이런 상태이다
config = 프로젝트 전체 설정
pybo = 게시판 앱 코드
templates = HTML 템플릿 모음
db.sqlite3 = 실제 데이터베이스 파일
manage.py = Django 명령 실행 파일''
질문 목록 화면에서 링크를 클릭하여 요청한 질문 상세 URL은 다음과 같다.
http://localhost:8000/pybo/2/
자 이부분을 구현해볼것이다 question으로 등록하면 123이렇게 index가 부여되는데 pybo/index가 있을때 index로 접근이 가능하게 한다.
위에 주소를 타고 들어가면 2번쨰의 인덱스 질문이 뜨게 하는것이

urlpattern에 아래와 같이 추가한다

이것도 추가한다
url별칭
url별층을 왜하냐....
- 하드코딩: 친구에게 전화할 때마다 010-1234-5678을 직접 누르는 방식.
- URL 별칭: 번호를 친구 이름으로 저장해 두고 이름으로 전화를 거는 방식.
지금은 question이 몇개 없으니까 pybo/3으로 작성해도 문제가 없었따그래서 실제 주소가 아닌
별층을 사용하는 것이다!
자 여기까지가 2-5에대한 내용이고 각각 프레임워크에서 무슨 역할을 하는지 정리를 해보겠습니다

현재 보면 이렇게 생겻는데
config는 전체 Django 사이트 전체 설정 폴더이다=> 프로젝트 전체 담당
config는 전체 사이트 본부
pybo는 사이트 안에 들어있는 게시판 기능
config안에 5개가 들어있는데
첫번째로 config/setting.py 이게 핵심 설정 파일이라고 합니다
여기에는 DB 앱등록 템플릿 위치 보안이 들어갑니다
두번쨰로 config/urls.py가 있는데 이거는 전체url입구이다
여기 들어있는 값은 path("admin/",admin.site.urls), path("pybo/",include(pybo/urls.py))이런 내용이 담겨 있는데 뜻을 해석해보자면
admin으로 시작하면 Django관리자 페이지로 보내는 것이고 /pybo로 시작하면 pybo/urls.py로 넘긴다 게시판 기능한테 넘기는 거지
자 예를 들어 사용자가 /pybo/3/에 접속하면 흐름은
config/urls.py(여기가 전체 입구니까 일단 일로 가야지)->pybo발견->pybo/urls.py로 넘긴다->3/를 보고 detail view실행
config/asgi.py, config/wsgi.py 이 두개는 서버 배포할떄 중요한 부분이라 그냥 넘기겟습니다
pybo는 실제 기능이 들어있는 Django앱이다 내가 지금까지 만든 실습에서는게시판 앱 역할을 하고 잇다
pybo/models에서는 데이터베이스 테이블 구조를 python코드로 정의한 파일이다
class Question(models.Model):
subject = models.CharField(max_length=200)
content = models.TextField()
create_date = models.DateTimeField()
이렇게 예를 들자면 적혀있는데 subject는 제목 content는 내용 create_date는 작성일이 적혀있다
데이터 저장!

html에 프론트 적어주고
<int ~~>이거는 url안에 숫자를 꺼내서 question_id라는 ㅇ리ㅡㅁ으로 view함수에 넘긴다는 의미
이 주소로 요청이 오면 views파일안에 answer_create함수를 실행한다

뷰함수는 이렇게 생격고
u