티스토리 뷰
One Projects, Multi App
장고 프로젝트 : 장고프로젝트 룰에 따라 파일/디렉토리 구성이 된 디렉토리(파이썬 패키지)
장고 앱 : 장고 앱 룰에 따라 파일 디렉토리 구성이된 파이썬 패키지
1. Django Project 생성
django-admin startproject [프로젝트명]
>> django-admin startproject askdjango # askdjango라는 이름의 프로젝트를 생성한다.
PS E:\tmp\askdjango> cd .\askdjango\ 디렉터리: E:\tmp\askdjango\askdjango Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2017-xx-xx 오후 3:51 3225 settings.py -a---- 2017-xx-xx 오후 3:51 787 urls.py -a---- 2017-xx-xx 오후 3:51 412 wsgi.py -a---- 2017-xx-xx 오후 3:51 0 __init__.py (참고) 프로젝트를 생성 한 상위디렉토리의 파일명은 변경이 가능하다 초록색 하이라이트 |
2. Django App 생성
모든 명령은 manage.py가 존재하는 디렉토리에서 진행 할 것
python3 manage.py startapp [앱 이름]
>> python3 manage.py startapp blog # blog라는 이름을 지정하여 blog앱을 생성한다.
프로젝트 생성 이후 아래와같은 설정작업이 필요하다.
1. 앱을 프로젝트의 등록 !! 프로젝트(askdjango) 의 settings.py 파일 수정 # blog앱을 추가
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'blog', ] |
2. 프로젝트(askdjango) 의 urls.py 파일 수정
from django.conf.urls import include, url urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^blog/', include('blog.urls', namespace='blog')) # blog/이하 url요청에 대한 처리를 blog로 넘김 ## namespace의 경우, 여러개의 프로젝트 생성 시 views 함수 처리의 이름 중복이 발생할수 있어, namespace와 name을 지정하여 중복 예외 ( 프로젝트 상단 namespace지정, 앱 내부 url name을 지정하여 중복을 피함 ) |
3. 앱 (blog)의 urls.py 생성 후 아래와 같이 기본 틀 작성
from django.conf.urls import url urlpatterns = [ ] |
4. 앱 (blog)의 디렉토리 templates 디렉토리 생성 (필히 templates디렉토리 생성 후 하위디렉토리 "앱 명" 디렉토리 추가 생성)
>> mkdir -p templates/blog/
## 4번 항목은 필수사항 아님
(참고) blog라는 앱의 디렉토리가 생성되며 python3 manage.py --help를 통해 사용가능한 명령어를 확인할수 있다.
[auth] changepassword createsuperuser [contenttypes] remove_stale_contenttypes [django] check compilemessages createcachetable dbshell diffsettings dumpdata flush inspectdb loaddata makemessages makemigrations migrate sendtestemail shell showmigrations sqlflush sqlmigrate sqlsequencereset squashmigrations startapp startproject -------------생략------------- |
3. View 파일 작성 및 URL 패턴 매칭
1. views.py를 열어 post_list라는 임의 함수를 작성
# blog/views.py
from django.shortcuts import render def post_list(request): return render(request, 'blog/post_list.html') |
2. 앱(blog)의 urls.py 설정
# blog/urls.py from django.conf.urls import url from . import views # blog앱 (현재 디렉토리) views를 import한다. urlpatterns = [ url(r'^$', views.post_list), ## /blog/라는 url로 요청이 들어올 경우 post_list함수를 처리 하여라. ] |
3. app/templates/app/post_list.html 작성
# blog/templates/blog/post_list.html <h1> AskDjango </h1> <p> 안녕하세요. 여러분의 파이썬/장고 페이스메이커가 되어드리겠습니다. ;) </p> |
4. Django 실행
python3 manage.py runserver 0:[임시포트] 실행
http://127.0.0.1:8000/blog 접속
(참고) django를 실행 시킨 터미널은 그대로 유지하고 새로운 터미널을 실행시켜 작업을 진행한다.
#
(참고) viewport meta태그를 적용하여, 모바일 뷰 대응
- viewport meta : 배율 x 1.0 고정으로, 유저의 배율 조정을 막는다.
meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" /> |
휴대폰 브라우저로 개발서버에 접속 하기 위해 ngrok를 사용하여 개발테스트가 가능하다.(https://ngrok.com/)
정리
1. url 별로 호출 함수를 등록 한다 (# /blog/요청이 올 경우 views.post_list함수를 호출 하여라)
2. Views에 선언된 함수를 통해 요청을 처리하여 반환 한다.
(이때, views는 model을 통해 database를 참조하여, 데이터를 조회/수정/삭제 하고, 해당 결과를 템플릿을 통해 유저에게 응답한다.)
django 설치방법 및 overview는 https://nomade.kr/vod/django/53/ 참고 바랍니다.
"""본 내용은 AskDjango VOD, "장고 차근차근 시작하기" 강의내용을 참고하여 작성했습니다.(https://nomade.kr/)"""
'Python > * Django' 카테고리의 다른 글
6. Django Admin (0) | 2017.12.12 |
---|---|
5. Migration (0) | 2017.12.12 |
4. Django Model과 Model Fields (0) | 2017.12.12 |
3. View Overview (0) | 2017.12.12 |
2. URL Conf 및 정규표현식 (1) | 2017.12.11 |