인터넷의 모든 페이지는 고유한 URL을 가지고있어야 한다. application 은 사용자가 URL을 입력하면 어떠한 내용을 보여줘야 하는지 알고있다. django는 URLconf(URL configuration)을 사용합니다. URLconf는 URL 과 일치하는 view를 찾기위한 패턴들의 집합입니다.
장고URL은 어떻게 작동할까?
처음 Wecode/urls.py
을 vim urls.py 커맨드를 입력하면 위에 사진에 내용이 이미 적용이되어있다. 그리고 그안에서 독스트링((docstring),(""", ''')) 을 확인할수있는데, 이 독스트링은 파일 제일 첫 부분, class 또는 method 윗부분에 작성해, 이들이 어떠한 일을 수행하는지 알려줍니다. 주석 이라 생각하면됩니다.
path("admin/", admin.site.urls),
관리자URL의 path가 이미 주어져 있는것을 볼수있는데, Django는 admin/
로 시작하는 모든 URL을 view와 대조해 찾아냅니다.
polls 디렉토리에 URLconf를 생성하기위해 urls.py파일 생성
최상위URLconf에서 polls.urls module을 바라보게 설정
매개 변수
module -- URLconf module (or module name)
namespace (str) -- Instance namespace for the URL entries being included
pattern_list -- Iterable of path() and/or re_path() instances.
app_namespace (str) -- Application namespace for the URL entries being included
include() 함수는 다른URLconf 들을 참조할 수 있게 도와줍니다.
Django가 함수include()를 만나게 되면, URL의 그 시점까지 일치하는 부분을 잘라내고, 남은 문자열 부분을 후속처리를 위해 include된 URLconf로 전달합니다.
즉, polls디렉토리에서 urls라는 모듈을 찾아낼수있게 include()함수를 사용하여 참조하게 하였다.
이렇게 path() 함수에 2개의 필수 인수인 route와 view가 들어가고 2개의 선택가능한 인수 kwargs와 name 까지 모두 4개의 인수가 전달되었다.
pattern들은 GET 이나 POST 의 매개변수들, 혹은 도메인 이름을 검색하지않는다.
https://www.example.com/Website/
가 요청이 된 경우 오직 Website/
부분만 바라본다.https://www.example.com/Website/?page=3
같은 요청에도 URLconf는 오직 Website/
부분만 바라봅니다.
HttpRequest 객체
class HttpRequest:
"""가장 기본적인 http 요청"""
# GET / POST dicts에 사용 된 인코딩. 없음은 기본 설정을 사용함을 의미합니다.
_encoding = None
_upload_handlers = []
def __init__(self):
# WARNING: "WSGIRequest" 서브 클래스는"super"를 호출하지 않습니다.
# 만들어진 모든 변수 할당
# "WSGIRequest.__init__()".
self.GET = QueryDict(mutable=True)
self.POST = QueryDict(mutable=True)
self.COOKIES = {}
self.META = {}
self.FILES = MultiValueDict()
self.path = ''
self.path_info = ''
self.method = None
self.resolver_match = None
self.content_type = None
self.content_params = None
def __repr__(self):
if self.method is None or not self.get_full_path():
return '<%s>' % self.__class__.__name__
return '<%s: %s %r>' % (self.__class__.__name__, self.method, self.get_full_path())
<input type = "file"name = "">
의 이름입니다. FILES의 각 값은 UploadedFile입니다."/music/bands/the_beatles/"
와같이 나타난다application의 WSGIScriptAlias가 /minfo
로 설정된 경우 path는 /minfo/music/bands/thebeatles/
path_info는 /music/bands/thebeatles/
가 된다.
if request.method == 'GET':
do_something()
elif request.method == 'POST':
do_something_else()
요청에 사용 된 HTTP 메소드를 나타내는 문자열입니다. 대문자로 보장됩니다.