Django 中的视图装饰器允许你在视图函数的执行前或执行后应用额外的逻辑。这可以用于添加权限检查、缓存控制、日志记录等功能。以下是一些常见的 Django 视图装饰器:

1. @login_required: 限制对视图的访问,只有已登录的用户才能访问。
    from django.contrib.auth.decorators import login_required

    @login_required
    def my_view(request):
        # 视图逻辑

2. @permission_required: 限制对视图的访问,只有具有指定权限的用户才能访问。
    from django.contrib.auth.decorators import permission_required

    @permission_required('myapp.can_view_data')
    def my_view(request):
        # 视图逻辑

3. @require_http_methods: 限制视图只能接受指定的 HTTP 方法。
    from django.http import HttpResponse
    from django.views.decorators.http import require_http_methods

    @require_http_methods(["GET", "POST"])
    def my_view(request):
        # 视图逻辑

4. @cache_page: 缓存视图的输出。
    from django.views.decorators.cache import cache_page

    @cache_page(60 * 15)  # 缓存 15 分钟
    def my_view(request):
        # 视图逻辑

5. @require_POST / @require_GET / @require_safe: 分别要求视图只能接受 POST、GET、或者幂等(safe)的 HTTP 请求。
    from django.http import HttpResponse
    from django.views.decorators.http import require_POST, require_GET, require_safe

    @require_POST
    def my_post_view(request):
        # 只接受 POST 请求的视图逻辑

    @require_GET
    def my_get_view(request):
        # 只接受 GET 请求的视图逻辑

    @require_safe
    def my_safe_view(request):
        # 只接受幂等请求(GET, HEAD, OPTIONS)的视图逻辑

这些只是 Django 中一些内置的视图装饰器示例。你还可以创建自定义的装饰器来满足你的特定需求。确保查阅 Django 4.0 的官方文档,以获取最新的信息。


转载请注明出处:http://www.pingtaimeng.com/article/detail/7215/Django