Django의 response.
render_to_response('index.html', locals(),context_instance=RequestContext(request))
매개변수 순서: (template name, dictionary=None, context instance=None)
django 템플릿 시스템에는 두 가지 봉인 템플릿 변수의 종류가 있는데 하나는 django이다.template.Context, 이것은 가장 자주 사용하는 것입니다. 우리는render 를 사용합니다.to_response 방법에서 두 번째 dictionary 인자를 전송하면 이 Context 클래스에 한 번 봉인되어 템플릿에 전송됩니다.
또 하나는 django.template.RequestContext 는 Context 클래스와 두 가지 차이점이 있습니다.
첫 번째 차이점은 RequestContext 변수를 생성할 때 HttpRequest 대상을 첫 번째 인자로 전송해야 한다는 것이다.
그 다음에 템플릿에 자동으로 주입되는 변수를 증가시킵니다. 이 변수는 settings의 TEMPLATECONTEXT_PROCESSORS에 선언된 메서드가 반환됩니다. TEMPLATECONTEXT_PROCESSORS의 방법은 Http Request 대상을 수신하고, 최종적으로return은 dict입니다.이 dictionary 안의 요소는 RequestContext에서 템플릿을 자동으로 주입하는 변수가 됩니다.예컨대django.contrib.auth.context_processors.auth는user,messages,perms 변수를 되돌려줍니다
# in django/contrib/auth/context_processors.py
def auth(request):
""" ignore doc string """
def get_user():
....
return {
'user': SimpleLazyObject(get_user),
'messages': messages.get_messages(request),
'perms': lazy(lambda: PermWrapper(get_user()), PermWrapper)(),
}
때때로 dictionary=locals () 라는 동작을 사용합니다. 이것은 현재 영역의 모든 국부 변수를 dictionary에 부여하는 것입니다.
Response와 HttpResponse의 차이점
# django/http/response.py
# HttpResponse
class HttpResponseBase(six.Iterator):
def __init__(self, content_type=None, status=None, reason=None, charset=None):
class HttpResponse(HttpResponseBase):
def __init__(self, content=b'', *args, **kwargs):
super(HttpResponse, self).__init__(*args, **kwargs)
# Content is a bytestring. See the `content` property methods.
self.content = content
python super(HttpResponse, self).__init__(*args, **kwargs)
HttpResponse 상위 클래스 HttpResponseBase를 호출하는init__방법# rest_framework/response.py
# Response
class Response(SimpleTemplateResponse):
def __init__(self, data=None, status=None,
template_name=None, headers=None,
exception=False, content_type=None):
from rest_framework.decorators import api_view
@api_view(['GET', 'POST', ])
def articles(request, format=None):
data= {'articles': Article.objects.all() }
return Response(data, template_name='articles.html')
장식기를 추가하지 않으면 ".accepted renderer not set on Response"이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.