장고란?
실시간으로 pyt정보를 가져와 웹서비스를 만드는데 도움을 주는 도구
프레임워크 중 1, 프레임워크는 개발에서 반복적으로 사용되는 개념들을 미리 만들어둔 것.
건축 장소에서 바로 만드는 목조 주택=라이브러리
공장에서 만들어 오는 이동식 주택, 작업량이 적다, 개발 속도 빠르다=프레임워크
개발 현장에서는 여러 라이브러리와 프레임워크 동시 사용
-> 장고는 파이썬 언어를 사용하는 프레임워크
<Terminal>
-CLI(명령어로 컴퓨터를 조작하는 인터페이스)를 GUI(윈도우, 맥 처럼 마우스를 이용) 환경에서 사용할 수 있게 만들어주는 도구이다. GUI에서 CLI를 구동하게 해주는 것.
-윈도우는 git bash가 터미널
-$=프롬프트, 사용자의 명령을 기다리는 표시
- 디렉터리 위치 표현
-Home(~)=터미널 구동 시 처음 위치하는 디렉터리
-Working directory(.)=작업중인 현재 위치
-Root directory(맨 처음의 /)=모든 디렉터리의 시작점, 맨 처음 이후의 "/"표시는 디렉터리 구분용
-상위 디렉터리(..)=상대적으로 상위의 디렉터리를 가리킴
-하위 디렉터리(여러 개가 존재할 수 있기 때문에 표현 방법X)=바로 아래의 자식 디렉터리를 가리킴
-절대 경로=Root directory 부터 현재 디렉터리까지 모든 경로를 표현
-상대 경로= 현재 위치부터 시작
- 터미널 명령어
명령어는 종류에 따라 선택적으로 옵션이나 인자가 붙는다.
-옵션= "-"로 시작해서 영문 대소문자로 구성, 명령어의 기능을 구체화하며 명령어에 따라 유무가 달라진다. 한 번에 여러 개 사용 가능
-인자=파일명이나 디렉터리명을 가리킴. 명령어의 수행 대상이 되는 파일, 디렉터리이다. 명령어에 따라 유무가 달라진다.
pwd (print working directory) | 현재 위치를 알려준다. |
man 알고자 하는 명령어 | 명령어 설명서, 설명 창 닫기=Q |
ls (list) | 디렉터리 목록을 보여준다. (ls / = 루트 디렉터리의 목록) ls -a = 숨김파일까지 보여준다. ls -l = 상세하게 보여준다. ls -F = 파일인지 디렉터리인지 알려준다. |
cd 이동하고 싶은 위치 | 현재 위치를 이동해준다. |
clear | 터미널 청소기 |
history | 지금까지 입력한 명령어들을 다 보여준다. 화살표 키로 불러오기 가능 |
Tab 키 | 명령어, 디렉터리를 다 입력하지 않아도 tab키를 사용하면 자동으로 완성해준다. |
- vs code django 가상환경
- vs code는 단순 에디터이다. 따라서, 개발을 위한 기능이 없으므로 terminal을 이용해 사용한다.
- 가상환경은 프로젝트를 여러 개 동시 진행할 때, 독립된 가상 공간 안에서 진행하기 위해 사용한다.
# 가상환경 생성 / myvenv = 가상환경 이름
python -m venv myvenv
# 가상환경 실행 (윈도우, 맥)
source myvenv/Scripts/activate
source myvenv/bin/activate
# django 다운 / pip=python install package
pip install django
# project 생성 / project1 = 프로젝트 이름
django-admin startproject project1
# manage.py 실행하기, 서버 구동하기
cd project1 #manage.py가 있는 폴더로 이동
python manage.py runserver
# manage.py 실행 중지, 서버 구동 중지
ctrl + c
- MTV 패턴
Model (back end) = DB 데이터 저장소
Template (front end) = HTML, CSS
View (back end) = 핵심, 데이터 처리소, 요청을 받아 모델로부터 가져온 데이터를 가공하여 템플릿에게 전달
- 웹 사이트 구동 순서
1. 사용자가 서버에 요청
2. 서버의 view가 model에게 요청해 필요한 데이터를 받음
3. view는 받은 데이터를 가공하여 template에게 전달
4. template은 받은 데이터를 사용자에게 보여줌
1. 서버 요청받기 전 보여지는 화면인 template 코딩
2. views.py에서 함수 코딩
3. model은 DB가 필요할 경우 코딩
- App 생성
-장고 프로젝트를 이루는 작은 단위, 서비스별로 만든다 ex) 네이버 - 검색, 블로그, 뉴스
-앱 추가 시 settings.py에 등록하여 인식하도록 해야 한다.
# App 생성_manage.py가 있는 폴더로 이동해야 한다.
# App 생성 / project1app = 앱 이름
python manage.py startapp myapp
# settings.py 에서 app을 등록한다.
INSTALLED_APPS = [
'myapp.apps.MyAppConfig',
]
myapp.apps.MyappConfig로 알고 있는데 왜지
- 입문 실습_project 1
1. 기본 세팅 = 가상환경, 앱
2. 앱 폴더에 template 폴더 생성 후 그 안에 welcome.html 생성
<div style="text-align: center">
<h1>사용자의 이름을 입력하세요.</h1>
<br>
<form action="hello">
<label for="nameInput">이름 : </label>
<input id="nameInput" name="name">
<input type="submit" value="제출">
</form>
</div>
3. view 제작
from django.shortcuts import render
def welcome(request):
return render(request, "welcome.html")
#welcome이라는 이름의 함수 생성
#앞으로 다른 곳에서 welcome이라는 이름으로 함수를 요청하면
#이 함수는 render 함수로 welcome.html을 띄워줄거야. return 쓰는건 암기
#근데 우리는 사용할 때 함수로 호출하지 않고 "naver.com" 등의 url로 사이트를 호출한다.
#즉, view 함수와 url 연결 필요 -> urls.py에서 path작성
4. url 연결, path 작성
from django.contrib import admin
from django.urls import path
from myapp import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.welcome, name="welcome"),
]
#앱의 views.py에 있는 함수를 연결해오기 위해 import 해주기
#path('연결할 url주소_비워둘 경우 첫페이지가 welcome이 되도록, view의 함수, name)
#세 번째 인자=welcome함수를 다른 html에서 쉽게 연결하기 위해 url 대신 name입력해서 작동하도록
5. 입력받으면 보여줄 창인 hello.html 제작
<div style="text-align: center;">
<h1>반갑습니다! {{userName}}님
</div>
#중괄호 두 개를 이용하면 html에서 python을 이용할 수 있다.
#이름 위치에 userName 키 값을 받아준다.
6. view 제작
def hello (request):
userName = request.GET["name"]
return render(request, 'hello.html', {'userName' : userName})
# welcome.html의 input박스에서 이름을 가져오는 것인데, name으로 되어있으니
#가져온 값을 render 함수에 넘겨준다, render는 hello.html을 띄워준다.
#세 번째 인자에 딕셔너리 자료형으로 넘겨줄 데이터들을 입력하면 html파일로 정보가 넘어감
#username이 넘겨줄 키값 / hello.html로 userName 이라는 이름으로 값이 넘어간다.
7. url 연결, path 작성
from django.contrib import admin
from django.urls import path
from myapp import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.welcome, name="welcome"),
path('hello/', views.hello, name="hello"),
]
welcome.html의 form action은 이 과정 이후 url 대신 불러올 수 있는 이름인 "hello"로 넣어준 것.
'Programming > Django & Python' 카테고리의 다른 글
Model & CRUD 장고 데이터베이스 (0) | 2021.11.18 |
---|---|
vscode 장고 파이썬 가상환경, 프로젝트 생성, 런서버 방법 (0) | 2021.05.26 |
[파이썬 입문_미운코딩새끼:4시간] 1강-25강 강의노트 (0) | 2021.05.19 |