https://docs.djangoproject.com/ko/4.0/intro/tutorial01/
첫 번째 장고 앱 작성하기, part 1 | Django 문서 | Django
Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate
docs.djangoproject.com
공식문서와 인프런 이진석 강사님의 강의를 참고 하여 공부하였습니다. https://www.inflearn.com/course/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%9E%A5%EA%B3%A0-%EC%9B%B9%EC%84%9C%EB%B9%84%EC%8A%A4/dashboard
*문제가 되면 즉시 삭제하겠습니다*
파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 - 인프런 | 강의
파이썬/장고 웹서비스 개발의 기초를 탄탄히 다져보세요. 리액트를 통해 최신 트렌드의 웹 프론트엔드를 경험해보세요. 파이썬만 아시면 시작하실 수 있습니다. 여러분의 상상을 현실로 만들어
www.inflearn.com
프로젝트 만들기
django를 처음 사용한다면, django projcet를 구성하는 코드를 자동 생성해야 한다. 이 과정에서 데이터베이스 설정, django 위한 옵션들, 어플리케이션을 위한 설정들과 같은 django 인스턴스를 구성하는 수많은 설정들이 생성되기 때문이다.
cmd에서 cd 명령으로 코드를 저장할 디렉토리로 이동 한 후, 다음의 명령을 수행한다.
$ django-admin startproject zzuzzu
이 명령으로 현재 디렉토리에서 zzuzzu라는 디렉토리를 생성할 것이다.
zzuzzu 에 무엇이 생성되는지 확인해보자

이 파일들은,
- file:zzuzzu/ 디렉토리 밖은 프로젝트를 담는 공간입니다. 그 이름은 Django 와 아무 상관이 없으니, 원하는 이름으로 변경해도 된다
- manage.py: Django 프로젝트와 다양한 방법으로 상호작용 하는 커맨드라인의 유틸리티 이다
- __init__.py: Python으로 하여금 이 디렉토리를 패키지처럼 다루라고 알려주는 용도의 단순한 빈 파일입니다.
- settings.py: 현재 Django 프로젝트의 환경 및 구성을 저장한다.
- urls.py: 현재 Django project 의 URL 선언을 저장한다
- asgi.py: 현재 프로젝트를 서비스하기 위한 ASGI-호환 웹 서버의 진입점이다
- wsgi.py: 현재 프로젝트를 서비스하기 위한 WSGI 호환 웹 서버의 진입점이다.
개발 서버
zzuzzu 디렉토리로 이동하고 개발 서버를 만든다.
$ python manage.py runserver
커멘드라인에서 다음과 같이 출력된다.

웹 브라우저의 http://127.0.0.1:8000 를 통해 접속가능하다.
앱 만들기
앱을 생성하기 위해 커멘드라인에 다음의 명령을 입력한다.
$ python manage.py startapp blog1
blog1 이라는 디렉토리가 생성된다.
세팅 수정하기
zzuzzu/setting.py 파일에 INSTALLED_APPS 부분에 생성한 앱을 추가시켜주어야한다.
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog1',
]
포스트 작성하기
http://127.0.0.1:8000 에 접속한뒤 /admin을 추가하면 로그인창이 나오는데 로그인을 한뒤
blog1에 간단한 포스트를 작성한다.

blog1/models.py 파일에 다음과 같이 코드 작성
from django.db import models
class Post(models.Model):
title = models.CharField(max_length = 100)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add = True)
updated_at = models.DateTimeField(auto_now = True)
커멘드창에 python manage.py makemigrations blog1
python manage.py migrate blog1 입력
admin 등록하기
blog1/admin.py 를 열어 다음과 같이 코드 작성
from django.contrib import admin
from .models import Post
admin.site.register(Post)
첫 번째 뷰 작성하기
blog1/view.py 를 열어 다음과 같이 코드를 작성한다.
from django.shortcuts import render
from .models import Post
def post_list(request):
qs = Post.objects.all() # QuerySet
return render(request, 'blog1/post_list.html', {
'post_list' : qs,
})
뷰를 호출하려면 이와 연결된 URL 이 있어야 하는데, 이를 위해 URLconf가 사용된다.
blog1/urls.py 파일에는 다음과 같은 코드를 포함한다.
from django.urls import path
from . import views
urlpatterns = [
path('', views.post_list , name = 'post_list'),
]
다음 단계는, 최상위 URLconf 에서 polls.urls 모듈을 바라보게 설정한다.. mysite/urls.py 파일을 열고, django.urls.include를 import 하고, urlpatterns 리스트에 include() 함수를 다음과 같이 추가한다.
zzuzzu/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('blog1', include('blog1.urls')),
]
include() 함수는 다른 URLconf들을 참조할 수 있도록 도와준다. Django가 함수 include()를 만나게 되면, URL의 그 시점까지 일치하는 부분을 잘라내고, 남은 문자열 부분을 후속 처리를 위해 include 된 URLconf로 전달한다.
blog1 디렉터리안에 templates/blog1/post_list_html 파일을 만든다.
그리고 다음과 같은 코드를 입력한다.
<h1>Post List</h1>
{% for post in post_list %}
<h2>{{ post.title }}</h2>
{{ post.content }}
{% endfor %}
한 뒤
http://127.0.0.1:8000/blog1에 접속하면

장고를 활용한 간단한 웹을 만들었다.
피드백은 언제나 환영입니다.