첫 번째 장고 앱 작성하기, Part 1
목표!
- 설문조사(Polls) 앱 만들기.
- 사람들이 설문 내용을 보고 직접 투표할 수 있는 사이트
- 관리자가 설문을 추가, 변경, 삭제할 수 있는 관리용 사이트.
이슈 발생
- 저는 User name 이 한글인 관계로 anaconda가 제 디렉토리를 찾지를 못해 pip이 안먹힙니다..
- 때문에 django-admin 을 명령어로 찾을 수 없었고
- 다음과 같은 방법으로 해결했습니다.
- pip설치 : https://imspear.tistory.com/21
# django-admin 위치 찾기
find / -name django-admin
# 기존 상대경로 명령어 대신 django-admin startproject mysite
# find로 찾은 절대경로 명령어로 mysite 프로젝트를 생성했습니다.
myHome/.local/bin/django-admin startproject mysite
프로젝트 생성시 주의점
파이썬이나 장고의 built-in 패키지 명은 피하기(django, test..)
코드를 DocumentRoot에 넣으면 안좋음. 웹을 통해 외부인들이 파이썬 코드를 열어 볼 위험.
프로젝트 파일 명들
manage.py: 프로젝트를 관리하기 위한 명령줄 유틸리티.
mysite/: 프로젝트 python 패키지들을 저장할 디렉토리
mysite/init.py: 같은 이름의 다른 디렉토리를 막을 수 있게 한다.
mysite/settings.py: 프로젝트의 환경 및 구성을 저장합니다. Django settings참고
mysite/urls.py: URL 선언들을 저장합니다. Django 로 작성된 사이트의 《목차》
나머지는 배포하기위한 파일들.
개발 서버 동작
$ python manage.py runserver
- 개발 서버를 운영 환경에서 사용하지 말 것.
- 개발 서버는 수정 시 자동 최신화 된다!
포트 변경하기.
python manage.py runserver 8080
python manage.py runserver 0:8000
요청 및 응답의 개요
- 장고는 requests와 response 객체를 사용해 상태를 전달한다.
- 페이지가 요청되면 장고는 requests에 HttpRequest에 대한 메타 데이터를 포함하는 객체를 생성한다.
- 장고는 적절한 뷰를 로드해 뷰 함수의 첫번째 인수로 전달한다. 각 뷰는 HttpResponse객체를 반환할 책임이 있다.
앱 생성
python manage.py startapp polls
뷰 작성 하기.
# polls/view.py
from django.http import HttpResponse
def index(request):
return HttpResponse("What the hell.")
뷰를 호출하기 위해 연결된 URL을 URLconf 모듈을 통해 구성
URLconf
# polls/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
최상위 URLconf에 연결
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
- include()는 다른 URL 패턴이 포함될 때마다 사용해야 한다.(admin.site.urls제외)
Path()!!!
- 필수 인자 route, view
- 선택 인자 kwargs, name
route : url 패턴을 가진 문자열. 요청이 오면 장고는 urlpatterns의 첫번째 패턴부터 시작하여, 일치하는 패턴을 찾을 때 까지 요청 된 URL을 각 패턴과 리스트 순서대로 비교.
- 패턴들은 GET,POST의 매개변수, 도메인 이름에는 관심 가지지 않음 오직 route만 봄
view : 장고에서 일치하는 패턴을 찾으면 HttpRequest 객체를 첫번째 인수로 하고 경로에서 capture 된 값을 키워드로 해서 특정한 view함수를 호출한다.
kwargs : 임의의 키워드 인수들은 목표한 view에 사전형으로 전달된다.
name : URL에 이름을 지으면 템플릿을 포함한 Django 어디에서나 참조가능. ID같은 거. 하나만 수정해도 프로젝트 내 모든 URL 패턴을 바꿀 수 있게 해줌.
내일 공부할 내용.
URL dispatcher로 URL 디자인 하는 방법.
URL이 깔끔해야하는 이유.
URLconf의 함수 path, re_path, include, register_converter, static, url
HttpRequest, Response 객체 API
'backend > Django&Python' 카테고리의 다른 글
[Django] View단 연결하기 (0) | 2021.08.25 |
---|---|
[Django] DB설치하기 migration 익히기 (0) | 2021.08.25 |
[Error] django-admin 못찾을 때 (0) | 2021.08.23 |
[Python] 파이썬의 메모리 관리 : Garbage Collections (3) | 2021.08.19 |
[Python] value값으로 정렬. operator의 itemgetter! (0) | 2021.07.30 |