[day-33] 기본 흐름

Joohyung Park·2024년 2월 21일
0

[모두연] 오름캠프

목록 보기
60/95

기본 흐름

가상환경 생성

  • 아나콘다
  • python -m venv (가상환경 이름)

폴더 생성(프로젝트 생성)

  • mkdir (프로젝트이름)
  • cd (폴더이름) : 폴더 이동

Django 설치

  • pip install django
  • conda install django

Django 초기 세팅

  • django-admin startproject (프로젝트이름) .

파이썬 코드 DB에 반영하기

  • python manage.py migrate
    • 지금은 초기 단계에서 하지만 실무에서는 초기 세팅이 전부 끝나고 사용한다. 먼저 migrate하면 에러나는 경우가 있다!

서버 구동(동작 확인)

  • python manage.py runserver

앱 생성

  • python manage.py startapp (app이름)
    • main은 기본으로 선언하고 필요한 만큼 app을 선언한다.
    • 만들 URL 뒤에 숫자가 붙거나 추가로 무언가 계속 붙으면 앱을 추가로 만든다고 생각하면 편하다.

접속 가능한 유저 설정

  • 루트 > 프로젝트이름 > settings.py 내부
    • ALLOWED_HOSTS = ["*"]
    • 모든 사람이 접속 가능하도록 설정한 예시입니다.

사용할 앱 선언

  • 루트 > 프로젝트이름 > settings.py 내부
INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "main", # 보통은 마지막에 넣는데 맨 위에 넣으시는 분도 있으십니다.
]

위 파일에 직접 만든 앱의 이름을 기록합니다.

URL 설계 반영

  • 루트 > 프로젝트이름 > urls.py 내부
from django.contrib import admin
from django.urls import path
from main.views import index, bloglist, blogdetails, userdetails

urlpatterns = [
    path("admin/", admin.site.urls),
    path("", index),
    path("blog/", bloglist),
    path("blog/<int:pk>/", blogdetails),
    path("user/<str:user>/", userdetails),
]

adminpath부분은 그대로 가져간다고 생각하면 되고 main.views 임포트 하는 부분에 URL 주소를 입력하면 된다. 이 주소에 대한 정보는 views.py파일에서 가져온다.

urlpatterns 내부에는 path를 활용하여 앱의 URL을 정의한다. <int:pk> 혹은 <str:user>부분이 생소할 수 있는데 이 부분들은 URL 뒤에 DB의 키(식별하는 데에 사용)가 들어간다.

  • path("", index) : 웹 사이트의 루트 URL을 입력하면 index라는 뷰를 호출한다. 다른 코드도 비슷한 기능을 한다.

설계한 URL의 텍스트 선언

  • 루트 > 프로젝트 이름 > views.py 내부
# DB와 비슷한 방식으로 저장된 리스트

blog_list = [
    {
        "id": 1,
        "title": "장고는 너무 재미있어!!!",
        "content": "This is the content of blog 1",
        "author": "Author 1",
    },
    {
        "id": 2,
        "title": "파이썬도 너무 재미있어!!!!",
        "content": "This is the content of blog 2",
        "author": "Author 2",
    },
    {
        "id": 3,
        "title": "자바스크립트는 별로였어!!!",
        "content": "This is the content of blog 3",
        "author": "Author 3",
    },
]

user_list = [
    {
        "id": 1,
        "username": "hojun",
        "email": "hojun@gmail.com",
        "password": "1234",
    },
    {
        "id": 2,
        "username": "jihun",
        "email": "jihun@gmail.com",
        "password": "1234",
    },
    {
        "id": 3,
        "username": "junho",
        "email": "junho@gmail.com",
        "password": "1234",
    },
]
from django.shortcuts import render
from django.http import HttpResponse

def index(request):
    return HttpResponse("<h1>환영합니다! index 페이지입니다.</h1>")
    
def bloglist(request):
    blogitem = ""
    for i in blog_list:
        blogitem += f'<li><a href="/blog/{i["id"]}">{i["title"]}</a></li>'
    return HttpResponse(
        f"""
    <h1>블로그 리스트</h1>
    <ul>
        {blogitem}
    </ul>
"""
    )
    
def blogdetails(request, pk):
    blog = blog_list[pk - 1]
    return HttpResponse(
        f"""
    <h1>{blog['title']}</h1>
    <p>{blog['author']}</p>
    <p>{blog['content']}</p>
"""
    )

def userdetails(request, user):
    finduser = None
    for i in user_list:
        if i["username"] == user:
            finduser = i
    if finduser is None:
        return HttpResponse("해당 유저가 없습니다.")
    return HttpResponse(
        f"""
    <h1>{finduser['username']} 님의 정보</h1>
    <p>이름: {finduser['username']}</p>
    <p>이메일: {finduser['email']}</p>
"""
    )

위 코드와 같이 urls.py에서 선언한 URL들에 대한 함수를 선언하여 화면에 표시할 텍스트를 결정한다.

페이지 정상 작동 확인

  • python manage.py runserver

참고사항

  • 모놀리식
    • 앱의 모든 구성 요소가 하나의 단일 코드베이스 내에 통합되어 있음
    • FBV(Function Based Views) : 각 뷰는 하나의 함수로 작성되며, 요청을 처리하는 방식이 명시적이며 이해하기 쉽다.
    • CBV(Class Based Views) : 각 뷰를, 파이썬의 클래스로 작성하는 방식이다. 재사용성을 높이고, 유지보수가 쉽다. 하지만 직관적이지 않을 수 있다.
  • 마이크로식
    • 앱을 작은, 독립적인 서비스로 분리하는 방식
    • 각 서비스는 자체적인 DB와 API를 가지고 있으며, 서로 통신하여 전체 앱을 구동함. 큰 규모의 앱에서 유용
    • FBV
    • CBV
profile
익숙해지기 위해 기록합니다

0개의 댓글