본문 바로가기
웹 개발 실습/Django

[Django]_맛집 공유 사이트 만들기 (1) 프로젝트 구성 & CREATE

by ssolLEE 2023. 7. 30.
반응형

 

 

이 프로젝트도 마찬가지로 책 'Django 한 그릇 뚝딱'의 Chapter 3을 보며 실행해보았습니다. 책의 저자님께 다시 한 번 감사말씀 드립니다.

 

 프로젝트와 app 구성하기

 

  • 작업할 폴더를 생성하고 이동합니다. 저는 RestaurantShare 폴더를 생성 - 가상환경 접속 - 라이브러리 설치 까지 완료했습니다.
mkdir RestaurantShare
cd RestaurantShare
code .
virtualenv venv
source venv/Scripts/activate
pip install django
  • 프로젝트를 생성하겠습니다. 프로젝트 이름은 RestaurantShare로 하겠습니다. 
django-admin startproject RestaurantShare
cd RestaurantShare
ls  # 결과로 manago.py 와  RestaurantShare/가 있으면 된다.
  • 두 개의 app을 만들겠습니다. shareRessendEmail입니다.
python manage.py startapp shareRes
python manage.py startapp sendEmail
  • 이제 app을 등록하러 가겠습니다. 
    • RestaurantShare > RestaurantShare > settings.py로 이동합니다.
    • INSTALLED_APPS에 두 app을 추가합니다.

 

URL  설정하기

 

이제 프로젝트 화면을 구성하겠습니다.

  • 책의 저자의 github에서 파일을 다운받습니다. (project > RestaurantShare 에 있는 html파일 4개 입니다.)

https://github.com/doorBW/Django_with_PracticeExamples

 

GitHub - doorBW/Django_with_PracticeExamples: "실전 예제로 배우는 Django" 서적에 대한 예제 문제들 및 코드

"실전 예제로 배우는 Django" 서적에 대한 예제 문제들 및 코드를 포함하고 있는 repository 입니다. - GitHub - doorBW/Django_with_PracticeExamples: "실전 예제로 배우는 Django" 서적에 대한 예제 문제들 및 코드

github.com

  • 위 4개의 파일은 모두 shareRes app에서 사용할 것입니다. 
    • shareRes 폴더 안에 templates폴더를 만들고, 그 안에 shareRes 폴더를 만들고, 이 4개의 파일을 넣습니다. 이때 파일명에서 '-init'은 지웁니다.

  • 메인 화면의 url 설정부터 시작하겠습니다. 
    • RestaurantShare > RestaurantShare > urls.py로 이동합니다.
    • 다음과 같이 path를 추가합니다.

url별로 각 app으로 처리를 넘겼다.

  • 이제 각 app에 urls.py를 만들고 코드를 입력합니다.
    • RestaurantShare> sendEmail > urls.py을 먼저 입력하겠습니다. (언제나 저장 잊지 마세요!)
# -*- coding:utf-8 -*-

from django.urls import path, include
from . import views
urlpatterns = [
    path('send/', views.sendEmail)
]
  • RestaurantShare> sendEmail > views.py로 이동합니다. 코드를 추가로 입력합니다. 

  • RestaurantShare> shareRes > urls.py로 이동합니다. 코드를 추가로 입력합니다. 
# -*- coding:utf-8 -*-

from django.urls import path, include
from . import views

urlpatterns = [
    path('', views.index, name='index'),
    path('restaurantDetail/', views.restaurantDetail, name='resDetailPage'),
    path('restaurantCreate/', views.restaurantCreate, name='resCreatePage'),
    path('categoryCreate/', views.categoryCreate, name='cateCreatePage')
]
  • RestaurantShare>shareRes> views.py로 이동합니다. 코드를 추가로 입력합니다. 

 

  • terminal에 python manage.py runserver를 입력하여 지금까지의 결과물을 확인해봅시다.

    우리가 설정한 문자열이 잘 출력됩니다.

 

 

템플릿 설정하기

  • 이제 각 화면에 html 파일을 연결하겠습니다.  render함수를 이용합니다.
  • RestaurantShare>shareRes>views.py로 이동합니다. 원래의 return은 주석처리 한 후에 다음과 같이 수정합니다. 

  • 다시 웹 서버에 접속하면 다음의 화면이 보입니다.

CRUD - Create

CRUD는 Create, Read, Update, Delete를 통틀어 이르는 말로, 웹 페이지에서 매우 기초적이면서도 핵심적인 역할을 합니다. 그 중에서 Create를 먼저 진행해보겠습니다. 

 

  • 카테고리의 생성, 추가는 우측의 +버튼을 누르면 됩니다. 책의 저자는 하나의 맛집이 하나의 카테고리에 속하는 방법으로 프로젝트를 구현합니다.
  • RestaurantShare > shareRes > models.py로 이동하여 다음 코드를 추가하여 모델을 정의하겠습니다.
class Category(models.Model):
    category_name = models.CharField(max_length= 100)
  • 이제 데이터베이스에 반영하겠습니다. 
  • terminal에 다음 명령어를 입력합니다. 
python manage.py makemigrations
python manage.py migrate
  • 다음 화면이 현재의 웹 페이지 입니다.

  • 이제 Create 로직을 구현하겠습니다. 
  • RestaurantShare> shareRes > urls.py로 이동하여 코드를 추가합니다.

  • RestaurantShare> shareRes > views.py로 이동하여 해당 함수를 정의하는 코드를 추가합니다.
def Create_category(request):
    return HttpResponse("여기서 category Create기능을 구현합니다.") #에러 확인용

 

  • 추가할 카테고리명을 입력한 후 '추가'를 눌렀을 때 다음의 화면이 나타난다면 에러는 없는 겁니다. 그럼 이제 사용자가 입력한 문자열을, 해당 문자열의 이름으로 카테고리 생성 및 데이터베이스에 저장하는 작업을 하겠습니다. 
  • RestaurantShare> shareRes > views.py에서 Create_category 함수의 내용을 작성합니다. 

  • 다시 웹 페이지로 가서 추가할 카테고리명을 입력한 후 '추가'를 누르면 메인 화면으로 돌아갈 것입니다. 
  • 이렇게 Create 작업이 끝났습니다. 

다음 시간에는 CRUD의 READ 작업부터 시작하겠습니다. 

감사합니다.