1. Python 가상환경에서 django 설치
가상환경 설정에 대한 방법은 다음 글 참조
[# Coding/가상 환경 구축] - PyCharm과 VS Code를 활용한 Python 가상환경 구축 & 패키지 설치
폴더 이름은 todolist-django로 설정 했다.
$ which python
가상환경 확인 후 아니면 변경해줌! (방법은 역시 링크걸어둔 글)
$ pip install django
django를 가상환경에 설치 (이미 있다면 안해도 됨)
2. ToDoList 프로젝트 생성
$ django-admin startproject ToDoList
django 실행 및 ToDoList 프로젝트 생성
$ ls
ToDoList 디렉토리 생성 확인
$ cd ToDoList/
프로젝트 경로로 이동
$ ls
manage.py 파일과 ToDoList 디렉토리 확인
$ python manage.py startapp my_to_do_app
manage.py를 통해 my_to_do_app 어플리케이션 생성
$ ls
제대로 생성됐는지 확인
3. 사이트 만들어보기
$ python manage.py runserver
서버 실행
사이트 안뜨면 커맨드 창에서 링크타고 열기 (ctrl + click)
4. 사이트 편집
+추가
from django.urls import path, include
urlpatterns에서
path('', include('my_to_do_app.urls'))
TodoList > ToDoList > urls.py 파일에서 ToDoList > my_to_do_app > urls.py 파일을 사용할 수 있도록 코드 작성해야 함
+추가
# -*- coding: UTF-8 -*-
한글 사용 시 글자 깨짐 방지를 위해 작성
from django.urls import path
from . import views
url patterns = [
path('', views.index)
]
my_to_do_app의 urls.py 에서 views.py를 import하고 urlpatterns 작성
views.py 파일에서 index 정의 해주는 코드 작성
from django.htttp import HttpResponse
import 부분 (+ 추가)
def index(request):
return HttpResponse("나의 첫번째 페이지")
index 함수 (+ 추가)
$ python manage.py runserver
manage.py가 있는 경로에서 가상환경으로 다시 서버 실행시켜 보면…
방금은 그냥 test용도였으니 지워주고 index.html 파일로 rendering 하도록 변경해준다.
def index(request):
return render(request, "my_to_do_app/index.html")
(코드 변경)
또한 실제 사용할 index.html 파일을 생성해야 하므로,
my_to_do_app에서 ‘templates\my_to_do_app’ 폴더 생성 후 (이중 폴더 생성)
<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>
index.html 생성 후 위와 같은 코드 작성
model.py에서 Todo 클래스 작성
$ python manage.py runserver
편집 후 사이트를 다시 보면...
5. Database와 Query
서버를 시작하고 터미널 창을 살펴보면 다음과 같은 경고가 뜬다.
$ python manage.py makemigrations
위 코드를 실행하면 migrations 폴더 안에 '0001_initial.py'가 작성된다.
(Views & Models & Templates) 변경 사항을 데이터베이스에도 적용하기 위해 다음 코드를 실행한다.
$ python manage.py migrate
Database shell 관리를 위해 다음 코드 실행
$ python manage.py dbshell
위와 같이 “commandError: You appear not to have the 'sqlite3' program installed or on your path.” 라는 에러가 뜰 경우
(SQLite Download Page)
위 링크에서 sqlite-tools를 받은 후, 압축을 풀고 ‘sqlite3.exe’ 파일을 프로젝트 수행중인 폴더 (manage.py가 있는 폴더)에 넣어준다.
그러고 다시 실행해보면 잘 실행된다.
SQL을 통해 Query 명령어들을 시험해보자.
sqlite> .tables
테이블 리스트를 보여준다.
sqlite> PRAGMA table_info(my_to_do_app_todo);
테이블의 특정 컬럼 정보 확인
sqlite> SELECT * FROM my_to_do_app_todo;
‘my_to_do_app_todo’ 컬럼에서 모든 정보를 읽어 들어온다.
다음 시간에는 Database에 정보를 추가하고 받아오는 실습을 해보자!
'# Coding > Django' 카테고리의 다른 글
Django의 MTV 패턴 (MVC 패턴과 비교) (0) | 2023.08.21 |
---|---|
Django로 엑셀파일 계산 페이지 만들기 (계산 기능 구현) (0) | 2023.08.12 |
Django로 엑셀파일 계산 페이지 만들기 (로그인 기능 구현) (0) | 2023.08.12 |
Django로 Gmail 보내기 (0) | 2023.07.29 |
Django To-do List 사이트 생성 (2) (0) | 2023.07.27 |