..\Lib\site-packages\django\views\decorators\http.py
"""
Decorators for views based on HTTP headers.
"""
import logging
from calendar import timegm
from functools import wraps
from django.http import HttpResponseNotAllowed
from django.middleware.http import ConditionalGetMiddleware
from django.utils.cache import get_conditional_response
from django.utils.decorators import available_attrs, decorator_from_middleware
from django.utils.http import http_date, quote_etag
conditional_page = decorator_from_middleware(ConditionalGetMiddleware)
logger = logging.getLogger('django.request')
def require_http_methods(request_method_list):
    """
    Decorator to make a view only accept particular request methods.  Usage::
        @require_http_methods(["GET", "POST"])
        def my_view(request):
            # I can assume now that only GET or POST requests make it this far
            # ...
    Note that request methods should be in uppercase.
    """
    def decorator(func):
        @wraps(func, assigned=available_attrs(func))
        def inner(request, *args, **kwargs):
            if request.method not in request_method_list:
                logger.warning(
                    'Method Not Allowed (%s): %s', request.method, request.path,
                    extra={'status_code': 405, 'request': request}
                )
                return HttpResponseNotAllowed(request_method_list)
            return func(request, *args, **kwargs)
        return inner
    return decorator
require_GET = require_http_methods(["GET"])
require_GET.__doc__ = "Decorator to require that a view only accepts the GET method."
require_POST = require_http_methods(["POST"])
require_POST.__doc__ = "Decorator to require that a view only accepts the POST method."
require_safe = require_http_methods(["GET", "HEAD"])
require_safe.__doc__ = "Decorator to require that a view only accepts safe methods: GET and HEAD."
views.py
from django.views.decorators.http import require_GET, require_POST
from django.views.decorators.http import require_http_methods
from django.views.decorators.http import require_safe
@require_GET
def test_get(request):
    """
    Decorator to require that a view only accepts the GET method.
    require_GET 装饰器只接受 GET 请求,否则返回 405 网页状态码。
    """
    pass
    
    
@require_POST
def test_post(request):
    """
    Decorator to require that a view only accepts the POST method.
    require_POST 装饰器只接受 POST 请求,否则返回 405 网页状态码。
    """
    pass
    
    
@require_http_methods(["GET", "POST"])
def test_get_and_post(request):
    """
    Decorator to require that a view only accepts safe methods: GET and POST.
    装饰器接受 GET 和 POST 请求,否则返回 405 网页状态码。
    """
    pass
@require_safe
def test_get_and_head(request):
    """
    Decorator to require that a view only accepts safe methods: GET and HEAD.
    require_safe 装饰器只接受 GET 和 HEAD 请求,否则返回 405 网页状态码。
    """
    pass