"2-1. 실습. 장고 기본작동원리 파악하기"의 두 판 사이의 차이

 
(다른 사용자 한 명의 중간 판 3개는 보이지 않습니다)
1번째 줄: 1번째 줄:
 
이 문서는 이론이 아닌, 오로지 장고를 이해하기 위한 실전을 위해 쓰이는 문서이다.
 
이 문서는 이론이 아닌, 오로지 장고를 이해하기 위한 실전을 위해 쓰이는 문서이다.
 +
 +
== 설치 ==
 +
장고를 설치하기 전에 가상환경을 만들고, 그 안에 설치하도록 하자.
 +
 +
그 안에서 pip install django 를 입력하면 설치를 진행한다.
  
 
== 프로젝트 만들기 ==
 
== 프로젝트 만들기 ==
68번째 줄: 73번째 줄:
 
|config 안의 urls.py를 수정한다.
 
|config 안의 urls.py를 수정한다.
 
이건 <code>test/</code>로 들어온 요청을 testapp 안의 urls.py로 돌린다는 의미.
 
이건 <code>test/</code>로 들어온 요청을 testapp 안의 urls.py로 돌린다는 의미.
 +
 +
 +
가장 상위의 urls.py에서 뷰를 불러와 사용할 수도 있지만, 해당 앱 내부에서 처리할 수 있게끔 앱으로 처리를 돌려주는 게 일반적이다.
 
|<syntaxhighlight lang="python">
 
|<syntaxhighlight lang="python">
 
from django.contrib import admin  # 관리기능
 
from django.contrib import admin  # 관리기능
149번째 줄: 157번째 줄:
 
</syntaxhighlight>앱 내부의 경로를 읽지 못하는 경우엔 Settings.py 안의 DIR(공용 탬플릿 디렉터리)를 주석처리 한 후 다시 실행하면 앱 내부의 templates 디렉터리를 읽는다.
 
</syntaxhighlight>앱 내부의 경로를 읽지 못하는 경우엔 Settings.py 안의 DIR(공용 탬플릿 디렉터리)를 주석처리 한 후 다시 실행하면 앱 내부의 templates 디렉터리를 읽는다.
 
|}
 
|}
 +
 +
== 확인 ==
 +
 +
* 서버를 실행하고 해당 링크로 접속해보면 <nowiki>{{hello}}</nowiki> 변수 안에 담긴 데이터를 볼 수 있다.(개발자도구로 보면 탬플릿의 내용이 그대로 나온다는 것을 알 수 있다.)
 +
* 터미널에서 보면 print(hello) 때문에 터미널에도 메시지가 나옴을 확인할 수 있다.
 +
 
[[분류:1. 장고 기초]]
 
[[분류:1. 장고 기초]]

2021년 5월 11일 (화) 18:57 기준 최신판

이 문서는 이론이 아닌, 오로지 장고를 이해하기 위한 실전을 위해 쓰이는 문서이다.

1 설치편집

장고를 설치하기 전에 가상환경을 만들고, 그 안에 설치하도록 하자.

그 안에서 pip install django 를 입력하면 설치를 진행한다.

2 프로젝트 만들기편집

과정 방법 비고
프로젝트 디렉터리 만들기 프로젝트를 담을 디렉터리를 만든다.
장고 설치 pip install django
프로젝트 생성 django-admin startproject config . 프로젝트 디렉터리가 될 곳 안에서 실행('.'은 현재 위치라는 의미.)

config 말고 다른 이름도 가능하지만, 추후에 바꾸기 어렵기 때문에 일반적으로 사용하는 config를 권장한다.

DB생성 python manage.py migrate DB변경사항을 반영하라는 명령이다.
서버작동 python manage.py runserver 서버를 돌린 후 http://localhost:8000 으로 들어가 작동이 되는지 확인해본다.

이게 된다면 기본적인 작동에 대한 문제는 없다.

3 test 앱 만들기편집

과정 방법 비고
생성 django-admin startapp testapp 프로젝트 디렉터리 안에서 실행. testapp이라는 앱을 만든다.

그냥 단순히 앱 이름의 디렉터리를 만드는 것 뿐. 기존의 앱을 옮겨온다면 그냥 붙여넣기를 하면 된다.

Settings.py에등록 Settings.py에 앱 등록config/settings.py 안에...

INSTALLSED_APPS 항목에 추가한다.

INSTALLSED_APPS 항목 안에 앱이름만 추가해준다. ex)
INSTALLED_APPS = [ 'django.contrib.admin',
                'django.contrib.auth',
                'django.contrib.contenttypes',
                'django.contrib.sessions',
                'django.contrib.messages',
                'django.contrib.staticfiles',
                'testapp', ]  # 요거 새로 추가.


혹은 앱의 config를 직접 등록한다.(이게 정석) 앱디렉터리의 apps.py 안의 Config를 직접 등록. test.apps.TestappConfig형식으로.

4 url.py 작성하기편집

과정 방법 비고
기본 요청을 앱으로 돌리기 config 안의 urls.py를 수정한다.

이건 test/로 들어온 요청을 testapp 안의 urls.py로 돌린다는 의미.


가장 상위의 urls.py에서 뷰를 불러와 사용할 수도 있지만, 해당 앱 내부에서 처리할 수 있게끔 앱으로 처리를 돌려주는 게 일반적이다.

from django.contrib import admin  # 관리기능
from django.urls import path, include  # path와 include를 사용하기 위함.

urlpatterns = [
    path('admin/', admin.site.urls),
    path('test/', include('testapp.urls')),  # 해당 url로 접근하면 testapp 안의 urls.py로 돌린다는 의미.
]
앱 안의 urls.py 만들기

처리할 뷰 지정하기

testapp 안에 urls.py를 만들고 작성한다.
from django.urls import path
from . import views  # 같은 경로 안의 views를 불러온다.

urlpatterns = [
    path('to/', views.hello),  # view 안의 hello 함수를 실행한다.
]

5 views.py 작성하기편집

과정 방법 비고
요청을 처리할 view를 작성한다. 기본적으로 request를 받고, HttpResponse를 반환한다.
from django.shortcuts import render  # html 파일을 뷰의 결과와 합쳐 HTML로 표현하기 위한 기능.

def hello(request):
    hello = "hello"
    context = {"hello": hello}  # 탬플릿에서 처리할 자료 지정.
    print("hello~")
    return render(request, 'test.html', context)

6 탬플릿 파일 작성하기편집

과정 방법 비고
작성 최상위에 templates 디렉터리를 만들고 그 안에 test.html을 만든다.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
test
<!--아래의 hello는 view로부터 받은 변수. 변수 안에 담긴 내용이 나타난다.-->
{{hello}}
</body>
</html>
탬플릿 경로 지정 탬플릿 경로를 알려준다.

config\settings.py를 수정한다.


다음과 같이 DIRS의 내용을 추가한다.

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR / 'templates'],  # 탬플릿을 찾을 공간을 지정한다.
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
앱 내부의 경로를 읽지 못하는 경우엔 Settings.py 안의 DIR(공용 탬플릿 디렉터리)를 주석처리 한 후 다시 실행하면 앱 내부의 templates 디렉터리를 읽는다.

7 확인편집

  • 서버를 실행하고 해당 링크로 접속해보면 {{hello}} 변수 안에 담긴 데이터를 볼 수 있다.(개발자도구로 보면 탬플릿의 내용이 그대로 나온다는 것을 알 수 있다.)
  • 터미널에서 보면 print(hello) 때문에 터미널에도 메시지가 나옴을 확인할 수 있다.