일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- c++ 정규식
- c3 step graph
- regex_search
- subporcess path
- centos pyhon 설치
- snmp test
- python popen
- 정규식 컴파일
- gcc regex
- python subprocess
- g++ 업데이트
- 백준
- c3 초
- grafana dashboard
- c3 축 없애기
- InfluxDB
- 1697
- snmp
- gcc 업데이트
- c3 축 가리기
- CentOS7
- 정규식 활용
- 정규식 문자열 출력
- selinux port 등록
- linux시간으로 변경
- c3 second
- python os
- telegraf
- semanage
- influxdb 설치
- Today
- Total
리셋 되지 말자
[점프 투 장고] url과 view 본문
pybo 앱 생성
django-admin startapp 명령어로 pybo라는 이름으로 앱을 생성한다.
$ django-admin startapp pybo
url 추가
localhost:8000/pybo 로 접속하면, 아래와 같이 웹 브라우저가 요청한 페이지를 찾을 수 없다는 것을 뜻하는 404 에러가 표시된다.
config/urls.py 파일에 URL 매핑 정보를 추가한다. 장고의 urls.py 파일은 페이지 요청이 발생하면 가장 먼저 호출되는 파일로 URL과 뷰 함수간의 매핑을 정의한다. (뷰는 views.py를 말한다.)
pybo의 base dir은 projects/mysite 이다.
urls.py
base dir이 mysite 이므로, mysite 아래에 있는 pybo 폴더로부터 views.py를 import 한다. 그리고 'pybo/' url이 요청되면, views.py의 index 함수를 호출하도록 매핑한다. 장고에서는 views.py를 뷰라고 부른다. 'pybo/' 끝에 '/' 슬래쉬를 붙이는 이유는, /pybo 로 요청해도 자동으로 /pybo/로 변환되기 때문이다. 이는 URL을 정규화 하는 장고의 기능이다. 특별한 경우가 아니면 URL 매핑 시 끝에 슬래쉬를 붙이도록 한다.
from django.contrib import admin
from django.urls import path
from pybo import views
urlpatterns = [
path('admin/', admin.site.urls),
path('pybo/', views.index),
]
views.py
pybo/views.py에 index 함수를 추가한다.
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
return HttpResponse("안녕하세요 pybo에 오신것을 환영합니다.")
HttpResponse는 HTTP 요청에 대한 응답을 할 때 사용하는 장고 함수이다. 여기서는 "안녕하세요 pybo에 오신것을 환영합니다." 라는 문자열을 웹브라우저에 출력하기 위해 사용되었다. index함수의 매개변수 request는 장고 프레임워크에 의해 자동으로 전달되는 HTTP 요청 객체이다.
여기까지 수정하고 웹서버를 다시 실행시킨 뒤, localhost:8000/pybo로 접속해본다.
장고의 흐름
- 웹브라우저에서 로컬서버로 URL(http://localhost:8000/pybo)을 요청
- 장고의 urls.py에서 URL을 해석하여 views.py 파일의 index 함수를 호출 (urls.py 파일에는 URL과 뷰 함수간의 매핑이 정의되어 있다.)
- 함수를 실행한 결과를 웹브라우저에 전달
urls 분리
pybo를 수정하게 되면, pybo 안에서만 수정을 해야하는데, pybo/views에 함수가 추가되거나 pybo의 하위 url이 추가될 때마다 config/urls을 수정해야 한다. 이를 분리하기 위해서 수정한다.
/projects/mysite/config/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('pybo/', include('pybo.urls')),
]
path('pybo/', include('pybo.urls')) 의 의미는, pybo/ 로 시작되는 URL이 요청되면 이제 pybo/urls.py 파일의 매핑정보를 읽어서 처리하라는 의미이다. 따라서 이제 pybo/question/create, pybo/answer/create등의 URL이 추가되더라도 config/urls.py 파일을 수정할 필요없이 pybo/urls.py 파일만 수정하면 될것이다.
pybo 아래에 urls.py 파일을 추가한다.
from django.urls import path
from . import views
urlpatterns = [
path('', views.index),
]
localhost:8000/pybo/ 로 요청을 하면, pybo/urls.py에서 매칭되는 path('', views.index)로 인해 pybo/views.py의 index 함수가 실행된다.
'Django' 카테고리의 다른 글
[점프 투 장고] URL과 네임스페이스 (0) | 2020.12.01 |
---|---|
[점프 투 장고] 조회와 템플릿 (0) | 2020.12.01 |
[점프 투 장고] 장고 관리자 (0) | 2020.12.01 |
[점프 투 장고] model (0) | 2020.12.01 |
[점프 투 장고] 프로젝트 생성 (0) | 2020.12.01 |