본문 바로가기
Web/Django

[Web] django로 Todolist 만들기 for Mac - 1

by skwkiix 2023. 7. 26.
728x90
이 포스팅은 "Django 한그릇뚝딱"의 Chapter4 내용을 실습하며 정리한 내용이다.

Github repository 생성 


0. 실행에 앞서 github에서 프로젝트에 사용될 repository를 만들어준다.

 Desktop % git clone https://github.com/sin09135/ToDoList_Practice.git
'ToDoList_Practice'에 복제합니다...
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
오브젝트를 받는 중: 100% (4/4), 완료.

 

1. 터미널에서 해당 폴더로 들어가 준 후, VS code를 실행해준다.

Desktop % cd ToDoList_Practice 
ToDoList_Practice % code .

Django ToDoList 만들기


1. 터미널에서 django를 설치한 후, 가상환경을 설정해준다.

$ which python < 파이썬 위치 확인

$ pip install django < 장고 설치


$ virtualenv venv
$ source venv/bin/activate < 가상 환경 들어가기

 

2. 프로젝트 만들기

django-admin start project 프로젝트명

$ django-admin startproject ToDoList < 프로젝트 만들기

$ cd ToDoList 
$ ls
ToDoList        manage.py   < manage 파일 존재하는 거 확인

 

3. 어플리케이션 구성하기

ToDoList 폴더에 들어가서  python manage.py startapp my_to_do_app 

$ cd ToDoList
$ python manage.py startapp my_to_do_app < app 만들기

 

4. Settings.py에 어플리케이션 추가

(새로 만든 어플리케이션을 등록하는 과정)

 

폴더 창

마지막 줄에 생성한 my_to_do_app 을 넣어준다.

 

 

5. URL 설정하기

프로젝트 실행 python manage.py runserver

$ python manage.py runserver

You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
July 26, 2023 - 05:14:22
Django version 4.2.3, using settings 'ToDoList.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

[26/Jul/2023 05:14:31] "GET / HTTP/1.1" 200 12

Command + 클릭을 누르면 실행창으로 넘어가게 된다.

잘 실행된것을 확인하면 다시 터미널에서 ctrl + c 를 눌러 꺼준다.

 

6.  첫 페이지 URL 설정

- 1. ToDoList > ToDoList > urls.py

      사용자가 접근했을 때, my_to_do_app 으로 보내주기

 

빨간 박스 부분을 추가해준다.

 

 

방금 코드로 첫페이지를 my_to_do_app 으로 보내주었다.

이제, my_to_do_app에서 설정을 완료해야한다.

 my_to_do_app 은 urls 파일이 없으므로 새로 생성해줘야 한다.

 

- 1. ToDoList > my_to_do_list > urls.py 생성

-2. 아래와 같이 코드를 적기

# my_to_do_app > urls.py
#-*- coding:UTF-8 -*- 

from django.urls import path
from . import views

urlpatterns = [
    path('',views.index)
]

views.py 의 index 함수로 처리를 넘겨준다.

-*- coding:UTF-8 -*-  : 한글 파일을 처리해주기 위해 입력

이제, 특정 URL 로 접근한 사용자에게 보여줄 화면을 처리할 함수를 연결하기 위해서, views.py 파일을 열어 함수를 생성해준다.

 

 

- 1. ToDoList > my_to_do_app > views.py

-2 . index 함수 생성

from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.
def index(request):
    return HttpResponse("my_to_do_app")

HttpResponse 함수는 인자로 받은 문자열을 보여주는 함수이다.

 

 

7. HTML 사용하기

- 1. ToDoList > my_to_do_app>templates 생성>my_to_do_app > index.html 생성

 

 

- 2. index. html 에 하위 내용 붙여넣기

<html lang="ko">
<head>
    <meta charset="UTF-8">

    <!-- Boot strap -->
    <!-- 합쳐지고 최소화된 최신 CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
    <!-- 부가적인 테마 -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap-theme.min.css">
    <!-- 합쳐지고 최소화된 최신 자바스크립트 -->
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>

    <style>
        .content{
            height: 75%;
        }
        .messageDiv{
            margin-top: 20px;
            margin-bottom: 50px;
        }
        .toDoDiv{

        }
        .custom-btn{
            font-size: 10px;
        }
        .panel-footer{
            height:10%;
            color:gray;
        }
    </style>

    <title>To-Do</title>
</head>
<body>
    <div class="container">
        <div class="header">
            <div class="page-header">
                <h1>To-do List <small>with Django</small></h1>
            </div>
        </div>
        <div class="content">
            <div class="messageDiv">
                <form action="" method="POST">{% csrf_token %}
                    <div class="input-group">
                        <input id="todoContent" name="todoContent" type="text" class="form-control" placeholder="메모할 내용을 적어주세요">
                        <span class="input-group-btn">
                            <button class="btn btn-default" type="submit">메모하기!</button>
                        </span>
                    </div>
                </form>
            </div>

            <div class="toDoDiv">
                <ul class="list-group">

                    <form action="" method="GET">
                        <div class="input-group" name='todo1'>
                            <li class="list-group-item">메모한 내용은 여기에 기록될 거에요</li>
                            <input type="hidden" id="todoNum" name="todoNum" value="1"></input>
                            <span class="input-group-addon">
                                <button type="submit" class="custom-btn btn btn-danger">완료</button>
                            </span>
                        </div>
                    </form>

                </ul>
            </div>
        </div>
        <div class="panel-footer">
            실전예제로 배우는 Django. Project1-TodoList
        </div>
    </div>
</body>
</html>

출처 : https://github.com/doorBw/Django_with_PracticeExamples (저자 깃허브)

 

 

- 3. views.py(ToDoList > my_to_do_app >views.py) 파일을 수정한다.

from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.
# before

'''
def index(request):
    return HttpResponse("첫번째 페이지")
'''
# after

def index(request):
    return render(request, "my_to_do_app/index.html")

HTML파일을 사용자에게 보여줄려면 render 함수 사용이 필요하다.

 

 

8. 확인

-  터미널에서 python manage.py runserver 로, html이 잘 연결되었는지 확인한다.

 

 

 

자세한 사항은 하단의 도서를 참고하길 바란다.

 https://www.yes24.com/Product/Goods/83568594

 

Django 한 그릇 뚝딱 - 예스24

실전 프로젝트로 하나씩 직접 만들며 배우는 웹 프로그래밍이 책에서는 빠른 생산성과 쉬운 내용으로 주목받고 있는 언어인 파이썬 그리고 파이썬을 기반으로 한 웹 프레임워크인 Django를 ToDoLis

www.yes24.com