바뀜

3,991 바이트 추가됨 ,  2021년 4월 20일 (화) 21:15
새 문서: 이 문서는 이론이 아닌, 오로지 장고를 이해하기 위한 실전을 위해 쓰이는 문서이다. == 프로젝트 만들기 == {| class="wikitable" !과정 !방법 !...
이 문서는 이론이 아닌, 오로지 장고를 이해하기 위한 실전을 위해 쓰이는 문서이다.

== 프로젝트 만들기 ==
{| class="wikitable"
!과정
!방법
!비고
|-
|프로젝트 생성
|django-admin startproject config .
|프로젝트 디렉터리가 될 곳 안에서 실행('.'은 현재 위치라는 의미.)
config 말고 다른 이름도 가능하지만, 추후에 바꾸기 어렵기 때문에 일반적으로 사용하는 config를 권장한다.
|-
|DB생성
|python manage.py migrate
|DB변경사항을 반영하라는 명령이다.
|-
|서버작동
|python manage.py runserver
|서버를 돌린 후 <nowiki>http://localhost:8000</nowiki> 으로 들어가 작동이 되는지 확인해본다.
이게 된다면 기본적인 작동에 대한 문제는 없다.
|}

== test 앱 만들기 ==
{| class="wikitable"
!과정
!방법
!비고
|-
|생성
|django-admin startapp testapp
|프로젝트 디렉터리 안에서 실행.
그냥 단순히 앱 이름의 디렉터리를 만드는 것 뿐. 기존의 앱을 옮겨온다면 그냥 붙여넣기를 하면 된다.
|-
|설정클래스 등록
|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를 직접 등록. <code>test.apps.TestappConfig</code>형식으로.
|}

== url.py 작성하기 ==
{| class="wikitable"
!과정
!방법
!비고
|-
|기본 요청을 앱으로 돌리기
|config 안의 urls.py를 수정한다.
이건 <code>test/</code>로 들어온 요청을 testapp 안의 urls.py로 돌린다는 의미.
|<syntaxhighlight lang="python">
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로 돌린다는 의미.
]
</syntaxhighlight>
|-
|처리할 뷰 지정하기
|testapp 안에 urls.py를 만들고 작성한다.
|<syntaxhighlight lang="python">
from django.urls import path
from . import views # 같은 경로 안의 views를 불러온다.

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

== views.py 작성하기 ==
{| class="wikitable"
!과정
!방법
!비고
|-
|요청을 처리할 view를 작성한다.
|기본적으로 request를 받고, HttpResponse를 반환한다.
|<syntaxhighlight lang="python">
from django.shortcuts import render # html 파일을 뷰의 결과와 합쳐 HTML로 표현하기 위한 기능.

def hello(request):
hello = "hello"
context = {"hello": hello}
print("hello~")
return render(request, 'test.html', context)
</syntaxhighlight>
|}

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


다음과 같이 DIRS의 내용을 추가한다.
|<syntaxhighlight lang="python">
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR / 'templates'],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
</syntaxhighlight>
|}
[[분류:1. 장고 기초]]