"2-1. 실습. 장고 기본작동원리 파악하기"의 두 판 사이의 차이
(새 문서: 이 문서는 이론이 아닌, 오로지 장고를 이해하기 위한 실전을 위해 쓰이는 문서이다. == 프로젝트 만들기 == {| class="wikitable" !과정 !방법 !...) |
잔글 (Sam님이 2-1. 장고 시작하기(기본작동 파악하기) 문서를 2-1. 실습. 장고 기본작동원리 파악하기 문서로 이동했습니다) |
||
(사용자 3명의 중간 판 8개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
이 문서는 이론이 아닌, 오로지 장고를 이해하기 위한 실전을 위해 쓰이는 문서이다. | 이 문서는 이론이 아닌, 오로지 장고를 이해하기 위한 실전을 위해 쓰이는 문서이다. | ||
+ | |||
+ | == 설치 == | ||
+ | 장고를 설치하기 전에 가상환경을 만들고, 그 안에 설치하도록 하자. | ||
+ | |||
+ | 그 안에서 pip install django 를 입력하면 설치를 진행한다. | ||
== 프로젝트 만들기 == | == 프로젝트 만들기 == | ||
6번째 줄: | 11번째 줄: | ||
!방법 | !방법 | ||
!비고 | !비고 | ||
+ | |- | ||
+ | |프로젝트 디렉터리 만들기 | ||
+ | | | ||
+ | |프로젝트를 담을 디렉터리를 만든다. | ||
+ | |- | ||
+ | |장고 설치 | ||
+ | |pip install django | ||
+ | | | ||
|- | |- | ||
|프로젝트 생성 | |프로젝트 생성 | ||
30번째 줄: | 43번째 줄: | ||
|생성 | |생성 | ||
|django-admin startapp testapp | |django-admin startapp testapp | ||
− | |프로젝트 디렉터리 안에서 실행. | + | |프로젝트 디렉터리 안에서 실행. testapp이라는 앱을 만든다. |
그냥 단순히 앱 이름의 디렉터리를 만드는 것 뿐. 기존의 앱을 옮겨온다면 그냥 붙여넣기를 하면 된다. | 그냥 단순히 앱 이름의 디렉터리를 만드는 것 뿐. 기존의 앱을 옮겨온다면 그냥 붙여넣기를 하면 된다. | ||
|- | |- | ||
− | | | + | |Settings.py에등록 |
|Settings.py에 앱 등록config/settings.py 안에... | |Settings.py에 앱 등록config/settings.py 안에... | ||
INSTALLSED_APPS 항목에 추가한다. | INSTALLSED_APPS 항목에 추가한다. | ||
|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', | + | ex) <syntaxhighlight lang="python"> |
− | + | INSTALLED_APPS = [ 'django.contrib.admin', | |
− | 'testapp', ] | + | 'django.contrib.auth', |
+ | 'django.contrib.contenttypes', | ||
+ | 'django.contrib.sessions', | ||
+ | 'django.contrib.messages', | ||
+ | 'django.contrib.staticfiles', | ||
+ | 'testapp', ] # 요거 새로 추가. | ||
+ | </syntaxhighlight> | ||
− | 혹은 앱의 config를 직접 등록한다. (이게 정석)앱디렉터리의 apps.py 안의 Config를 직접 등록. <code>test.apps.TestappConfig</code>형식으로. | + | 혹은 앱의 config를 직접 등록한다.(이게 정석) 앱디렉터리의 apps.py 안의 Config를 직접 등록. <code>test.apps.TestappConfig</code>형식으로. |
|} | |} | ||
54번째 줄: | 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 # 관리기능 | ||
64번째 줄: | 86번째 줄: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
|- | |- | ||
− | |처리할 뷰 지정하기 | + | |앱 안의 urls.py 만들기 |
+ | 처리할 뷰 지정하기 | ||
|testapp 안에 urls.py를 만들고 작성한다. | |testapp 안에 urls.py를 만들고 작성한다. | ||
|<syntaxhighlight lang="python"> | |<syntaxhighlight lang="python"> | ||
89번째 줄: | 112번째 줄: | ||
def hello(request): | def hello(request): | ||
hello = "hello" | hello = "hello" | ||
− | context = {"hello": hello} | + | context = {"hello": hello} # 탬플릿에서 처리할 자료 지정. |
print("hello~") | print("hello~") | ||
return render(request, 'test.html', context) | return render(request, 'test.html', context) | ||
128번째 줄: | 151번째 줄: | ||
{ | { | ||
'BACKEND': 'django.template.backends.django.DjangoTemplates', | 'BACKEND': 'django.template.backends.django.DjangoTemplates', | ||
− | 'DIRS': [BASE_DIR / 'templates'], | + | 'DIRS': [BASE_DIR / 'templates'], # 탬플릿을 찾을 공간을 지정한다. |
'APP_DIRS': True, | 'APP_DIRS': True, | ||
'OPTIONS': { | 'OPTIONS': { | ||
'context_processors': [ | 'context_processors': [ | ||
− | </syntaxhighlight> | + | </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', ] # 요거 새로 추가.
|
4 url.py 작성하기편집
과정 | 방법 | 비고 |
---|---|---|
기본 요청을 앱으로 돌리기 | config 안의 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를 수정한다.
|
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR / 'templates'], # 탬플릿을 찾을 공간을 지정한다.
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
|
7 확인편집
- 서버를 실행하고 해당 링크로 접속해보면 {{hello}} 변수 안에 담긴 데이터를 볼 수 있다.(개발자도구로 보면 탬플릿의 내용이 그대로 나온다는 것을 알 수 있다.)
- 터미널에서 보면 print(hello) 때문에 터미널에도 메시지가 나옴을 확인할 수 있다.