Django 공식문서 요약 1
/* Django 공식 문서를 읽고 공부하며 새롭게 알게된 사실만 기재한 글입니다. */
서버 주소와 포트 설정
python manage.py runserver
기본값으로 설정되어 있는 주소(127.0.0.1)와 포트(8000)으로 서버가 열리는 명령어입니다.
이 명령어 뒤에 원하는 포트번호를 추가하면 그 포트로 서버가 열리게 됩니다.
python manage.py runserver 8080
기본값으로 설정되어 있는 주소인 127.0.0.1도 바꿔줄 수 있습니다.
python manage.py runserver 0:8080
여기서 0은 0.0.0.0을 의미합니다.
화면에 처음 출력해보기
화면 출력을 담당하는 views.py에 간단한 출력 코드를 작성해주자
import django.http import HttpResponse
def index(request):
return HttpResponse("Hello Django World!")
HttpResponse는 Response를 리턴하는 가장 기본적인 함수로 주로 HTML을 반환하는 함수입니다.
위에서는 장고에게 인사하는 문자열을 넣어주었습니다.
이 index라는 이름으로 선언된 함수를 어떻게 호출하냐! 이 index라는 함수가 호출되는 url로 접속을 해야 위의 문자열을 확인할 수 있을 것입니다. 이런 url 관련 설정은 프로젝트 폴더의 urls.py가 총괄합니다.
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('polls/', views.index, name='index'),
path('polls/<int:question_id>/', views.detail, name='detail'),
path('polls/<int:question_id>/results/', views.results, name='results'),
path('polls/<int:question_id>/vote/', views.vote, name='vote'),
path('admin/', admin.site.urls),
]
polls라는 Application을 추가한 상태로 작성된 urls.py입니다.
요론 곳들이 있지만, route, view만 살펴보자면, 명시된 url(route)로 접속시 view의 자리에 명시되어 있는 view 함수를 호출합니다.
즉 위의 코드에서는 127.0.0.1:8000/polls 라는 주소로 들어갔을 때 장고에게 인사하는 문자열을 만나게 됩니다.
makemigrations 와 migrate의 역할
python manage.py makemigrations
python manage.py migrate
그냥 DB 관련 설정 파일을 만들고 적용해준다는 전체적인 역할만 알고있던 친구들인데, 차이를 알았습니다..!
makemigrations는 models.py에 개발자가 DB의 구조를 파이썬 코드로 짜놓았을 때, 그 코드를 장고가 SQL 문으로 바꾸는 과정을 실행하는 명령어입니다.
makemigrations를 실행했을 때 장고가 만들어낸 SQL문입니다. models.py에 적힌 그대로를 SQL문으로 바꾸어놓은 것을 확인할 수 있습니다.
migrate 명령어는 이를 실제 연결해놓은 DB에 적용하는 명령어입니다. migrate 명령어를 실행해야 DB에서 결과를 확인할 수 있고, migrate 명령어 실행 전에는 DB에 아무런 일이 일어나지 않음을 기억하쟈..!
Admin 페이지에서 사용자가 추가한 앱 보기
따로 설정하지 않고 admin 페이지에 들어갔을 때는 따로 추가한 Application이 보이지 않는다. admins.py에서 추가해주어야 한다.
from django.contrib import admin
from polls.models import Question
# Register your models here.
admin.site.register(Question)
HttpResponse + loader => render
The render() function takes the request object as its first argument, a template name as its second argument and a dictionary as its optional third argument. It returns an HttpResponse object of the given template rendered with the given context.
app_name 추가
urlpatters에 path 마다 name을 설정해줌으로써
hardcoded된 url에서 벗어날 수 있었습니다. 근데 지금 추가되어 있는 앱 polls 뿐만 아니라 다른 앱들이 10개 부터 크게는 100개까지 추가되는 프로젝트에서 저 detail이라는 이름을 가진 path가 중복된다면, 장고는 detail이라는 이름을 가진 url중 어떤 url을 가져와야 될지 모르게 됩니다. 여기서 추가해야 되는게 app_name
urls.py에 app_name = "polls"를 추가해주고 detail이라는 이름 앞에 polls의 detail을 가져오라는 polls:를 붙여준다면 헷갈리지 않고 잘 가져올 수 있을 것 입니다. 아래와 같이 말이죰^_^
하루에 요거밖에 못하다니
댓글
이 글 공유하기
다른 글
-
[Django] 프로젝트에 toast-ui-editor 적용하기(django admin)
[Django] 프로젝트에 toast-ui-editor 적용하기(django admin)
2022.06.10 -
[Django] Django 프로젝트 중 맞닥뜨린 높은 벽들
[Django] Django 프로젝트 중 맞닥뜨린 높은 벽들
2022.05.24 -
Django 상속
Django 상속
2021.03.02 -
Framework Django 기초 정리(3)
Framework Django 기초 정리(3)
2021.02.23