본문 바로가기

Web 개발/장고(django)

[장고 django] 1. 앱 작성하기

728x90

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에 접속하면 

 장고를 활용한 간단한 웹을 만들었다.

 

 

피드백은 언제나 환영입니다.

728x90