django-request 대상(정밀)

8823 단어 Django
구체적으로views에 있습니다.py에서 호출할 때 Http Request를 Request로 바꾸면 됩니다.홈페이지의 문서는 다음과 같이 상세하게 쓰여 있다.https://docs.djangoproject.com/en/2.2/ref/request-response/#django.http.HttpRequest.path
속성:
django는 요청 메시지의 요청 줄, 첫 번째 정보, 내용 주체를 HttpRequest 클래스의 속성으로 봉인합니다.특수 설명을 제외하고는 모두 읽기 전용이다.
1.HttpRequest.scheme는 요청한 방안을 나타내는 문자열입니다. 일반적으로 'http' 또는 'https' 입니다.
2.HttpRequest.body는 메시지를 요청하는 주체를 나타내는 문자열입니다.비HTTP 형식의 메시지를 처리할 때 매우 유용하다. 예를 들어 바이너리 그림, XML 등이다.단, 폼 데이터를 처리할 때에는 HttpRequest를 사용하는 것을 추천합니다.POST . 또한python의 클래스 파일 방법으로 그것을 조작할 수 있습니다. 자세한 내용은 HttpRequest를 참고하십시오.read() .
3.HttpRequest.path는 요청한 경로 구성 요소(도메인 이름 없음)를 나타내는 문자열입니다.예를 들어 "/music/bands/the beatles/"
4.HttpRequest.path_info는 일부 웹 서버 설정에서 호스트 이름 뒤의 URL 부분을 스크립트 접두사 부분과 경로 정보 부분으로 나누는 문자열입니다.path_info 속성은 웹 서버가 무엇이든지 경로 정보 부분을 항상 포함합니다.path 대신 코드를 사용하면 테스트와 개발 환경에서 쉽게 전환할 수 있습니다.예를 들어, WSGIScriptalias가 "/minfo"로 설정된 경우 path가 "/minfo/music/bands/the beatles/"인 경우 pathinfo는/music/bands/the beatles/가 됩니다.
5.HttpRequest.method는 HTTP 메서드를 요청하는 문자열을 나타냅니다.대문자를 사용해야 합니다.예를 들어 GET, POST
6.HttpRequest.encoding은 제출한 데이터의 인코딩 방식을 나타내는 문자열입니다. (None이면 DEFAULT CHARSET 설정을 사용합니다. 기본값은'utf-8'입니다.)이 속성은 쓰기 가능합니다. 방문 폼 데이터에 사용할 인코딩을 수정할 수 있습니다.다음에 속성에 대한 모든 접근 (예를 들어 GET나 POST에서 데이터를 읽는 것) 은 새로운 encoding 값을 사용합니다.만약 폼 데이터의 인코딩이 DEFAULT가 아니라는 것을 알고 있다면CHARSET은 를 사용합니다.
7.HttpRequest.GET는 HTTP GET의 모든 매개변수를 포함하는 사전과 유사한 개체입니다.자세한 내용은 QueryDict 객체를 참조하십시오.
8.HttpRequest.POST는 사전에 유사한 대상입니다. 요청에 폼 데이터가 포함되면QueryDict 대상으로 봉인합니다.POST 요청은 빈 POST 사전을 가지고 있을 수 있습니다. HTTP POST 방법을 통해 폼을 보내지만 폼에 데이터가 없으면 QueryDict 대상이 생성됩니다.따라서 if request를 사용해서는 안 됩니다.POST에서 POST 방법을 사용했는지 확인합니다.if request를 사용해야 합니다.method="POST"또한, POST를 사용하여 파일을 업로드하면 파일 정보가FILES 속성에 포함됩니다.
9.HttpRequest.사전과 유사한 REQUEST는 POST를 먼저 검색한 다음에 GET를 검색하는데 주로 편의를 위한 것이다.PHP에서 영감을 받은 $REQUEST.
예를 들어 GET = {"name": "john"}이고POST = {"age": "34"}이면 REQUEST["name"]는 "john"과, REQUEST["age"는 "34"와 같다.REQUEST가 명확하기 때문에 GET와 POST를 사용하지 않는 것이 좋습니다.
10.HttpRequest.COOKIES는 모든 쿠키를 포함하는 표준 Python 사전입니다.키와 값은 문자열입니다.
11.HttpRequest.FILES는 모든 업로드 파일 정보를 포함하는 사전과 유사한 객체입니다.FILES의 각 키는 의 name이고 값은 해당 데이터입니다.FILES는 요청 방법이 POST이고 enctype="multipart/form-data"가 제출된 경우에만 데이터를 포함할 수 있음을 주의하십시오.그렇지 않으면 FILES는 사전과 유사한 빈 객체가 됩니다.
12.HttpRequest.META는 모든 HTTP의 첫 번째 부분을 포함하는 표준 Python 사전입니다.구체적인 헤더 정보는 클라이언트와 서버에 따라 달라집니다. 다음은 몇 가지 예입니다.
CONTENT_LENGTH ——         (      )。
CONTENT_TYPE ——       MIME   。
HTTP_ACCEPT ——       Content-Type。
HTTP_ACCEPT_ENCODING ——         。
HTTP_ACCEPT_LANGUAGE ——         。
HTTP_HOST ——       HTTP Host   。
HTTP_REFERER —— Referring   。
HTTP_USER_AGENT ——     user-agent    。
QUERY_STRING ——              (       )。
REMOTE_ADDR ——     IP   。
REMOTE_HOST ——        。
REMOTE_USER ——          。
REQUEST_METHOD ——      ,  "GET"  "POST"。
SERVER_NAME ——        。
SERVER_PORT ——       (      )。

위에서 볼 수 있습니다. CONTENT를 제외하고는...LENGTH 및 CONTENTTYPE 이외에 요청한 HTTP의 첫 번째 키를 META 키로 변환할 때 모든 알파벳을 대문자로 하고 연결부호를 밑줄로 바꾸고 마지막에 HTTP접두사따라서 X-Bender라는 머리는 META의 HTTP 로 변환됩니다X_BENDER 키.
13.HttpRequest.user AUTHUSER_현재 로그인한 사용자를 나타내는 MODEL 유형의 객체
사용자가 현재 로그인하지 않으면 사용자는django로 설정합니다.contrib.auth.models.AnonymousUser의 인스턴스입니다.당신은 is 를 통과할 수 있습니다authenticated () 는 그것들을 구분합니다.
예를 들면 다음과 같습니다.
if request.user.is_authenticated(): # Do something for logged-in users. else: # Do something for anonymous users.
사용자 는 Django가 Authentication Middleware 중간부품을 사용할 때만 사용할 수 있습니다.
익명 사용자
class models.AnonymousUser
django.contrib.auth.models.AnonymousUser 클래스는 django를 구현했습니다.contrib.auth.models.User 인터페이스는 다음과 같은 몇 가지 차이점이 있습니다.
id    None。
username        。
get_username()         。
is_staff   is_superuser    False。
is_active     False。
groups   user_permissions     。
is_anonymous()   True    False。
is_authenticated()   False    True。
set_password()、check_password()、save()  delete()    NotImplementedError。

New in Django 1.8: 새로운 AnonymousUser.get_username () 은django를 더 잘 모의합니다.contrib.auth.models.User.
14.HttpRequest.세션은 현재 세션을 표시하는 읽을 수 있고 쓸 수 있는 사전과 유사한 대상입니다.Django에서 세션 지원을 활성화한 경우에만 사용할 수 있습니다.전체 세부 사항은 세션의 문서를 참조하십시오.
15.HttpRequest.urlconf는 Django 자체가 정의한 것이 아니지만, 다른 코드 (예를 들어 사용자 정의 중간부품 클래스) 가 설정하면 Django가 읽을 것입니다.존재하는 경우 현재 요청의 Root URLconf로 사용되며 ROOT 를 덮어씁니다.URLCONF 설정
16.HttpRequest.resolver_해석된 URL을 나타내는 ResolverMatch 인스턴스이 속성은 URL 해석 방법 이후에만 설정됩니다. 이것은 모든 보기에서 접근할 수 있지만 URL 해석이 발생하기 전에 실행된 중간부품 방법에서는 접근할 수 없습니다. (예:process request, 대신 프로세스 view를 사용할 수 있습니다.)
방법:
1.HttpRequest.get_Host() 기준 HTTPX_FORWARDED_HOST(USE X FORWARDED HOST가 열려 있는 경우 기본값은 False) 및 HTTPHOST 헤더 정보는 요청한 원래 호스트를 반환합니다.두 헤드에 적절한 값이 없으면 SERVERNAME 및 SERVERPEP 3333에서 자세히 설명된 PORT     USE_X_FORWARDED_X-Forwarded-Host의 첫 번째 부분을 우선적으로 사용할지 여부를 지정하는 부울 값예를 들어 "127.0.0.1:8000"참고: 호스트가 여러 에이전트의 뒤에 있을 때 gethost() 메서드는 실패합니다.중간부품을 사용하여 에이전트의 첫 부분을 다시 쓰지 않으면Django 공식 문서:The gethost() method fails when the host is behind multiple proxies. One solution is to use middleware to rewrite the proxy headers, as in the following example:
from django.utils.deprecation import MiddlewareMixin

class MultipleProxyMiddleware(MiddlewareMixin):
    FORWARDED_FOR_FIELDS = [
        'HTTP_X_FORWARDED_FOR',
        'HTTP_X_FORWARDED_HOST',
        'HTTP_X_FORWARDED_SERVER',
    ]

    def process_request(self, request):
        """
        Rewrites the proxy headers so that only the most
        recent proxy is used.
        """
        for field in self.FORWARDED_FOR_FIELDS:
            if field in request.META:
                if ',' in request.META[field]:
                    parts = request.META[field].split(',')
                    request.META[field] = parts[-1].strip()

This middleware should be positioned before any other middleware that relies on the value of get_host() – for instance, CommonMiddleware or CsrfViewMiddleware.
2.HttpRequest.get_full_path () 가 path를 되돌려줍니다. 검색 문자열을 추가할 수 있다면.예를 들어, "/music/bands/the beatles/?print=true"
3.HttpRequest.build_absolute_uri(location)가 location의 절대 URI를 반환합니다.location이 제공되지 않으면 Request를 사용합니다.get_full_path()의 반환 값입니다.URI가 이미 절대적인 URI인 경우 수정되지 않습니다.그렇지 않으면 요청된 서버 관련 변수를 사용하여 절대 URI를 구성합니다.예: "http://example.com/music/bands/the_beatles/?print=true”
4.HttpRequest.get_signed_쿠키(key,default=RAISE ERROR,salt=',max age=None)는 서명한 쿠키에 대응하는 값을 되돌려주고, 서명이 합법적이지 않으면django를 되돌려줍니다.core.signing.BadSignature. default 파라미터를 제공하면 이상을 일으키지 않고default의 값을 되돌려줍니다.선택할 수 있는 파라미터salt는 보안 키의 강력한 공격에 추가 보호를 제공할 수 있습니다.max_age 매개 변수는 쿠키가 대응하는 시간 스탬프를 검사하여 쿠키가 max 를 초과하지 않도록 합니다에이지 초.
>>> request.get_signed_cookie('name')
'Tony'
>>> request.get_signed_cookie('name', salt='name-salt')
'Tony' #      cookie          salt
>>> request.get_signed_cookie('non-existing-cookie')
...
KeyError: 'non-existing-cookie'    #            
>>> request.get_signed_cookie('non-existing-cookie', False)
False
>>> request.get_signed_cookie('cookie-that-was-tampered-with')
...
BadSignature: ...    
>>> request.get_signed_cookie('name', max_age=60)
...
SignatureExpired: Signature age 1677.3839159 > 60 seconds
>>> request.get_signed_cookie('name', False, max_age=60)
False

5.HttpRequest.is_secure() 요청이 안전할 경우 True로 돌아갑니다.즉, HTTPS에서 요청 패스가 시작됩니다.
6.HttpRequest.is_ajax () 요청이 XMLHttpRequest를 통해 시작되면 True를 되돌려줍니다. HTTPX_REQUESTED_WITH의 해당 첫 부분이 문자열'XMLHttpRequest'인지 여부대부분의 현대 자바스크립트 라이브러리에서 이 머리를 보냅니다.만약 당신이 자신의 XMLHttpRequest 호출을 작성한다면, isajax () 는 일할 수 있습니다.AJAX를 통해 요청이 시작되었는지, 어떤 형식의 캐시를 사용하고 있는지, 예를 들어 Django의cache middleware를 사용하고 있다면,vary 를 사용해야 합니다.on_headers ('HTTP X REQUESTED WITH') 는 응답을 정확하게 캐시할 수 있도록 보기를 장식합니다.
7.HttpRequest.read(size=None)는 요청 메시지의 내용 주체를 파일처럼 읽습니다. 마찬가지로 다음과 같은 방법도 사용할 수 있습니다.  HttpRequest.readline()   HttpRequest.readlines()   HttpRequest.xreadlines () 의 동작은 파일 작업과 같습니다.
HttpRequest.iter (): 파일의 줄마다 for 방식으로 교체할 수 있음을 설명합니다.
request.get_full_path() 및 request.path 차이점
1 Request 요청을 가져오는 URL 경로입니다
2 request.get_full_path () - 현재 URL을 가져오고 (파라미터 포함) 요청합니다.http://127.0.0.1:8000/200/?type=10 request.get_full_path ()는 [/200/? type=10] request를 반환합니다.path - 현재 URL을 가져옵니다. (파라미터가 포함되지 않음) Request.path가 [/200/] 반환
3 정상적으로 표시하려면 다음과 같은 인코딩 처리를 해야 합니다 [django 기본 인코딩은 유니버설입니다]
request.get_full_path().encode('utf-8')
request.path.encode('utf-8')

좋은 웹페이지 즐겨찾기