장고는 request와 response 객체로 data를 서버와 클라이언트가 주고 받습니다.
장고는 django.http 모듈에서 HttpRequest와 HttpResponse API를 제공합니다.
1. HttpRequest
클라이언트로 부터 들어오는 모든 요청을 담고 있습니다.
주요한 속성
HttpRequest.body # request의 body 객체
HttpRequest.headers # request의 headers 객체
HttpRequest.COOKIES # 모든 쿠키를 담고 있는 딕셔너리 객체
HttpRequest.method # reqeust의 메소드 타입
HttpRequest.GET # GET 파라미터를 담고 있는 QueryDict 자료형 객체
HTTpRequest.POST # POST 파라미터를 담고 있는 QueryDict 자료형 객체
HTTpRequest.FILES #POST 인자 중 파일에 한해서 접근이 가능
QueryDict?
python의 딕셔너리와 유사한 자료형으로, 딕셔너리는 Key 값이 중복 안되는데 비해 querydict 은 중복을 허용합니다.
request
우리가 여태 사용했던 request가 바로 HttpRequest의 객체입니다.
if request.method == 'GET':
2. HttpResponse
HttpResponse(data, content_type)
HttpResponse("Hi")
전달된 컨텐츠를 포함한 HttpResponse객체를 만들어 내는,
response를 반환하는 가장 기본 적인 함수입니다.
하나의 함수는 최소 하나의 HttpResponse을 반환해야합니다.
이는 views 에서 검사하는게 아니라 middleware 에서 검사를 하게 됩니다.
# config/settings.py
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
middleware는 app을 감싸고 있으면서
request가 들어올 때 적절하게 가공해주고
response가 나갈 때도 확인을 해줍니다.
3. HttpRedirect
HttpResponseRedirect(url)
response를 하지는 않고, 지정된 url페이지로 redicrect 합니다.
def button(request):
return redirect("https://www.google.com/")
4. Render
render(request(필수), template_name(필수), context=None, content_type=None, status=None, using=None)
render는 httpRespose 객체를 반환하는 함수입니다.
앱 내에 있는 templates을 context와 엮어 httpResponse로 반환해 주는 함수입니다.
context에서 key 값이 템플릿에서 사용할 변수이름, value값이 파이썬 변수- 보내주는 값을 말합니다.
def main(request):
name = "eun"
return render(request, 'main.html', {'name': name})
5. JsonResponse
JsonResponse(data, encoder=DjangoJSONEncoder,safe=True, json_dumps_params=None, **kwargs)
HttpResponse의 subclass로, json-encoded response를 생성할수 있게 해 줍니다.
response를 커스터마이징 하여 전달하고 싶을때, http status code에 더하여 메세지를 입력해서 전달할 수 있습니다.
- 대부분의 기능은 superclass(HttpResponse)에서 상속 받습니다.
- 첫번째 인자로는 전달할 데이터로서 반드시 dictionary 객체여야 합니다.
- Content-type 헤더의 default는 application/json.
- json_dumps_params는 json.dumps()에 전달할 딕셔너리의 keyword arguments.
'개발 > Django_python 웹 프레임워크' 카테고리의 다른 글
Django - N:M 좋아요기능(Ajax 사용 O) (0) | 2020.08.10 |
---|---|
Django 모델 - 1:1, 1:N, N:M (0) | 2020.08.04 |
Django - N:M 좋아요기능(Ajax 사용 X) (0) | 2020.08.03 |
쟝고 - 댓글 달기 (2) | 2020.08.01 |
ModelForm - 댓글 달기 (6) | 2020.07.29 |
댓글