Django를 활용하여 웹을 만들려고 할 때의 방법을 남겨둡니다.
'=>' 표시 후의 명령어는 command 창에서 입력하면 됩니다.
1. 프로젝트를 만들고자 하는 폴더에 들어가 커맨드를 입력해야 합니다.
=> django-admin startproject 프로젝트이름
-> 프로젝트 이름에 해당하는 폴더가 생깁니다.
2. 해당 폴더로 커맨드 명령 폴더를 옮겨야 합니다. => cd 프로젝트이름
그 후 app을 만들어야 하는데 app은 여러개를 만들어도 되고 하나만 만들어도 됩니다. 다만 여러 기능을 넣는 프로젝트라면 여러개를 만들어 따로 관리하는게 편리합니다.
=> python manage.py startapp 앱이름
-> 앱이름에 해당하는 폴더가 만들어지고 이제 앱을 만들었다는 것을 django에게 알리기 위해 프로젝트 폴더 밑에 있는 settings.py의 INSTALLED_APPS에 앱이름을 추가해 줍니다.
다음의 과정에서 app이름을 main이라고 지었다고 가정합니다.
3. app 폴더(main) 밑에 templates 폴더를 만들어야 하고 이 폴더 밑에 html파일을 만들어 줍니다. 그리고 앱 폴더 밑에 있는 views.py에서 다음과 같이 함수를 만들어줍니다. views.py는 해당 페이지에서 무엇을 보여줄지를 설정해준다고 생각하시면 됩니다. html 파일은 index.html 이라고 했을 때를 가정합니다.
from django.shortcuts import render
def index(request):
return render(request, 'index.html')
4. 이제 다시 프로젝트이름 폴더 밑의 urls.py를 수정해야 합니다.
from main.views import index
urlpatterns = [
path('admin/', admin.site.urls),
# name으로 index로 지정해야 template에서 {% url 'index' %}로 쓴 index로 가게된다
path('', index, name='index'),
]
위와 같이 main 폴더의 views에서 index라는 함수를 가져온다고 import를 선언해줍니다. 그리고 urlpatterns를 추가해주면 되는데 path 안의 ' '는 메인 페이지를 가정하여 url에 아무것도 붙이지 않겠다고 선언하는 것입니다. 예를들어 daum 페이지라면 https://www.daum.net/ 처럼 마지막 /뒤에 아무것도 붙이지 않겠다고 하는 것입니다. 만약 cafe 페이지 같은 곳을 들어가면 뒤에 /cafe 가 붙는 것처럼 해주려면 'cafe/'라고 해주면 됩니다. ' '뒤의 index는 views에서 import해준 함수를 말하고 name은 나중에 templates 안에서 여러 html을 만들고 서로 간의 url을 작성할 때 사용됩니다. 예를들어, cafe.html을 만들고 cafe.html 에서 index.html로 이동하고 싶을 때 장고에서는 {% url 'index' %}라는 문법을 사용해주어 서로 간의 연결을 해줍니다. html이름과 name을 같게하지 않아도 되지만 헷갈리지 않기위해 같은 이름을 사용하는 것이 좋습니다.
5. static 폴더생성과 경로 설정을 해주어야 합니다. static은 정적 파일들을 모아놓는 폴더로 프로젝트 폴더밑에 생성합니다. 이때의 프로젝트 폴더는 가장 바깥에 있는것을 말합니다. 이름을 static이라고 하고 이 폴더안에는 css,js,image 파일등을 정리하여 넣으면 됩니다. 이때 settings.py 에서 아래의 내용을 추가해줍니다.
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
html에서 static을 사용하기 위하여 html 파일 맨 위에 {% load static %} 을 추가해줍니다. head 부분에도 link를 작성해야 하는데 static 폴더 밑에 css폴더를 만들고 style.css 를 만들었다고 가정합니다.
{% load static %}
<head>
<link href="{% static 'css/style.css' %}" rel="stylesheet">
6. model 변경사항 migration 방법
- makemigrations: 모델 변경 사항을 django에게 알려준다. (마이그레이션 파일 생성)
- migrate: migrations를 반영하여 자동으로 데이터베이스 스키마를 관리해준다.
# 마이그레이션 파일 생성
$ python manage.py makemigrations <app-name>
# 마이그레이션 적용
$ python manage.py migrate <app-name>
# 마이그레이션 적용 현황
$ python manage.py showmigrations <app-name>
# 지정 마이그레이션의 SQL 내역
$ python manage.py sqlmigrate <app-name> <migration-name>
가장 기초적인 과정만을 설명해 놓았습니다. 정리해보면 project시작 => app생성 => views.py 수정 => urls.py 수정 => static 설정