ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 5주차 - Day1. Web Application with Django
    교육/프로그래머스 인공지능 데브코스 2021. 5. 18. 23:31
    728x90

    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파일 사이에서 사용할 인자

    template 폴더, index.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을 이용해 지정해주어야합니다.

    댓글

Designed by Tistory.