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', |
| + | 'django.contrib.auth', |
| + | 'django.contrib.contenttypes', |
| + | 'django.contrib.sessions', |
| + | 'django.contrib.messages', |
| + | 'django.contrib.staticfiles', |
| + | 'testapp', ] # 요거 새로 추가. |
| + | </syntaxhighlight> |
| | | |
− | 'testapp', ]
| |
| | | |
− | | + | 혹은 앱의 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': { |
134번째 줄: |
157번째 줄: |
| </syntaxhighlight>앱 내부의 경로를 읽지 못하는 경우엔 Settings.py 안의 DIR(공용 탬플릿 디렉터리)를 주석처리 한 후 다시 실행하면 앱 내부의 templates 디렉터리를 읽는다. | | </syntaxhighlight>앱 내부의 경로를 읽지 못하는 경우엔 Settings.py 안의 DIR(공용 탬플릿 디렉터리)를 주석처리 한 후 다시 실행하면 앱 내부의 templates 디렉터리를 읽는다. |
| |} | | |} |
| + | |
| + | == 확인 == |
| + | |
| + | * 서버를 실행하고 해당 링크로 접속해보면 <nowiki>{{hello}}</nowiki> 변수 안에 담긴 데이터를 볼 수 있다.(개발자도구로 보면 탬플릿의 내용이 그대로 나온다는 것을 알 수 있다.) |
| + | * 터미널에서 보면 print(hello) 때문에 터미널에도 메시지가 나옴을 확인할 수 있다. |
| + | |
| [[분류:1. 장고 기초]] | | [[분류:1. 장고 기초]] |