-
5주차 - Day1. Web Application with Django교육/프로그래머스 인공지능 데브코스 2021. 5. 18. 23:31728x90
1.django 시작하기
django : python기반 웹 프레임워크 인스타구뤰도 이걸로 만들었대
*flask와 다른 점?
-flask : "마이크로" 웹 프레임워크 -> 최소한의 기능 =>작은 프로젝트에 적합
-django : 거의 모든 것이 내장되어 있는 구조 =>큰 프로젝트에 적합
가상환경 설치하기
#파이썬 가상환경 모듈 설치 pip install virtualenv #현재 디렉토리에 새 virtualenv가상환경 만들기 virtualenv <가상환경 이름>
맥사고십따^^....
내 콤퓨타는 윈도우10인데 관리자로 powershell해도 바로 안돼서 진행한 방법 적어둠
#1.디렉토리 만들고 이동 mkdir django-proj cd django-proj #2.가상환경 만들기 virtualenv venv #!관리자모드로도 안돼서 아래의 명령 실행하고 Y입력 Set-ExecutionPolicy RemoteSigned #3.가상환경 실행 venv\Scripts\Activate.ps1 #4.django설치 pip install django #5. django-admin startproject webproj cd webproj python manage.py runserver #>>웹사이트주소가 나옴 주소긁어서 들어갔을때 깜찍한 로켓이 떠있다면 성공!
django의 구성요소
1. webproj:
-__init__.py: 'webproj'디렉토리가 파이썬 모듈로써 인식되게 하는 파일
-asgi.py, wsgi.py : 서버에서 실제로 django프로젝트를 가동할 때 다루게 될 파일
-settings.py : 파이썬 django프로젝트의 전반적인 설정사항을 반영하는 파일, 많은 기능들이 이미 내장되어 있는 걸 확인가능
-urls.py : url관련
2. manage.py : django 실행하는 파일
python manage.py runserver를 통해 실행하게 됨
#settings.py from pathlib import Path #django프로젝트에 대한 secret key # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = '' #True면 파이썬 프로젝트를 디버그모드로 실행 DEBUG = True #리스트 안에 주소를 넣음으로써 어떤 django프로젝트에 접근할지 결정 ALLOWED_HOSTS = [] # Application definition #여러 앱으로 이뤄져있는데 어떤 앱을 설치하는지 INSTALLED_APPS = [ ] MIDDLEWARE = [ ] #프로젝트에서 url관리를 어떤 모듈에서 진행할지 ROOT_URLCONF = '' #실제보는 화면에 관한 요소들이 담겨있음 TEMPLATES = [ { 'BACKEND': , 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ ], }, }, ] #파이썬 상에서 웹서버 상에서 소통하는 어플리케이션을 다룸 WSGI_APPLICATION = '' # Database #프로젝트 상에서 다루게 되는 여러 자료들을 저장하는 곳을 담당, mySQL, MariaDB등으로 변경 여기서 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', } } # Password validation #관리자부분에서 패스워드 변경 AUTH_PASSWORD_VALIDATORS = [ { 'NAME': '', }, { 'NAME': '', }, { 'NAME': '', }, { 'NAME': '', }, ] # Internationalization LANGUAGE_CODE = 'en-us' TIME_ZONE = 'UTC' USE_I18N = True USE_L10N = True USE_TZ = True # Static files (CSS, JavaScript, Images) #이후 CSS javascript같은 정적 파일들을 어디에 담아둘지 STATIC_URL = '/static/'
django Project and App
한 project는 여러 app으로 구성
django App만들기
(venv)~~~~$django-admin startapp <app_name>
(venv) PS C:~~\django-proj\webproj> django-admin startapp homepage
-__init__.py
-admin.py 파이썬에서는 admin페이지를 제공하는데 admin페이지에 관한 파일
-apps.py app에 대한 설정 파일
-models.py homepage라는 모듈안에서 쓰일 데이터베이스의 스키마등등을 클래스형태로 작성
-tests.py 프로젝트의 테스트케이스
-view.py 홈페이지라는 앱에서 뷰를 어떻게 관리해줄 것인가
django의 MVT Pattern
user<->django<->URL<->View<->MODEL, Temlplate
User가 request를 django에게 보냄
django(서버)가 URL을 인식 어떤 경로에 대한 요청이 들어왔는지 체크, 이 경로가 urls.py에 있다면 view에 보냄
view(views.py)에선 들어온 요청을 처리하는 로직이 있음
DB관련->MODEL(ORM으로 처리)/웹페이지관련->Template(html+template언어)
2. View로 Request Handling하기
#views.py from django.shortcuts import render, HttpResponse def index(request): return HttpResponse("Hello World!")
#urls.py from homepage.views import index urlpatterns=[ path('',index), ]
#settings.py INSTALLED_APPS=[ 'homepage', ]
과정
1.사용자가 127.0.0.1로 요청을 보냄
2.urls.py에서 주어진 경로가 들어있는지 확인
3.django에서 인식하고 index()를 실행하기 위해 views.py로 이동
4.views.py에 있는 index()를 실행하여 사용자에게 response
http://127.0.0.1:8000/admin/ 접속하는 방법
처음엔 계정을 만들지 않았기 때문에 계정을 만들고 접속해야함
#django를 만들때 admin이라는 db가 자동으로 생성, 마이그레이션해줘야함 #어떤 DB가 생성, 수정, 삭제되는 과정을 git commit하듯이 직접적으로 django에게 알려줘야함 #default로 만들어진 DB정보가 반영,실질적으로 django proj에 DB가 연동 python manage.py migrate python manage.py createsuperuser python manage.py runserver
3. Template로 보여줄 화면 구성하기
render(request, '.html', {}) #1.request로 받은 인자 #2.응답하는 과정에서 보여줄 파일 #3.request와 html파일 사이에서 사용할 인자
<!DOCTYPE html> <html> <head> <title>Python django example</title> </head> <body> <h1>Title</h1> <p>blah blah blah</p> </body> </html>
#settings.py TEMPLATES = [ { 'BACKEND': '', 'DIRS': [ #아래 두개 중 하나 추가 #os.path.join(BASE_DIR,"homepage","template"), #BASE_DIR+'homepage/template/index.html' ], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ ], }, }, ]
템플릿 필터 : 변수의 값을 특정 형식으로 변환할때 사용 ex)값의 길이, 특정 값만 원할 때 사용
{{템플릿 변수 | 템플릿 필터}}
템플릿 태그 : html자체에는 프로그래밍적인 요소를 사용할 수 없음 django에서 할 수 있는 방법
{%tag ... %} {%endtag ...%}
Day 3 - Django로 자기소개 페이지 만들기
필수 과제 : 아이엠 그라운드 자기소개 하기
- 다음 요청을 처리하는 웹 어플리케이션을 제작해주세요.
- GET / → 자기소개 웹 페이지를 Response
- 이 페이지는 HTML을 이용해서 여러분이 원하는 내용을 작성해주세요.
보너스 과제 : ⭐️아이😊엠 그라운드⛳️ 자기💁♀️소개💁♂️ 하기⭐️
- CSS나 JavaScript 등을 이용해 자신의 웹 페이지를 더욱 멋있게 만들 수 있습니다. HTML으로만 된 밋밋한 자기소개 페이지를 꾸며봅시다.
- 이들을 사용하기 위해선 이 파일들이 담긴 경로를 STATIC_URL을 이용해 지정해주어야합니다.
'교육 > 프로그래머스 인공지능 데브코스' 카테고리의 다른 글
Monthly Project1 (0) 2021.05.25 5주차 - Day2 Django로 동적 웹 페이지 만들기 (0) 2021.05.18 4주차 - Day 4. EDA Project (0) 2021.05.13 4주차 - Day 3. 데이터 씹고 뜯고 맛보고 즐기기 - EDA (0) 2021.05.13 4주차 - Day 2. 클라우드를 활용한 머신러닝 모델 Serving API개발 (0) 2021.05.13