- 설문조사(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 모듈을 통해 구성
# polls/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
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제외)
- 필수 인자 route, view
- 선택 인자 kwargs, name
route : url 패턴을 가진 문자열. 요청이 오면 장고는 urlpatterns의 첫번째 패턴부터 시작하여, 일치하는 패턴을 찾을 때 까지 요청 된 URL을 각 패턴과 리스트 순서대로 비교.
- 패턴들은 GET,POST의 매개변수, 도메인 이름에는 관심 가지지 않음 오직 route만 봄
-
URL dispatcher로 URL 디자인 하는 방법.
-
URL이 깔끔해야하는 이유.
-
URLconf의 함수 path, re_path, include, register_converter, static, url
-
HttpRequest, Response 객체 API