View decorators

1947 ワード

DjangoはいくつかのHTTPの特性をサポートするいくつかの装飾器を提供しています。
Allowed HTTP methods
django.views.decorators.httpモジュールの下にあるrequire_http_methods装飾器は、django.http.HttpResonseNot Allowedの条件が満たされていない場合に戻ります。

from django.views.decorators.http import require_http_methods
@require_http_methods(["GET", "POST"])
def my_view(request):
# I can assume now that only GET or POST requests make it this far POST GET
# ...
pass
似ているのはレギュイルです。GET()、レクリエーションPOST()、レクリエーションsafe()(GETとHEADのみの要求を受け付けます)
Coditional view processing
django.views.decorators.httpモジュールの下にあるcondition、lastudfunc=None、lastudfunc=None、etag、last_modifiedは、特定のビューのキャッシュ状況を制御するために使用されます。

import datetime
from django.db import models
class Blog(models.Model):
...
class Entry(models.Model):
blog = models.ForeignKey(Blog)
published = models.DateTimeField(default=datetime.datetime.now)
...

def latest_entry(request, blog_id):
return Entry.objects.filter(blog=blog_id).latest("published").published



from django.views.decorators.http import condition

@condition(last_modified_func=latest_entry)
def front_page(request, blog_id):
...

front_pages 。 front_pages 。 。conditon , cache 。

Vary headers
django.view.decoratos.varyの下にあるvaryうむcookie(func)とvary_うむheaders(*headers)装飾器は、特定の要求ヘッダのキャッシュ状況を制御するために使用される。

from django.views.decorators.vary import vary_on_headers
@vary_on_headers('User-Agent')
def my_view(request):
...

, user-agent