ajax views
1.0.0
JavaScript で AJAX ビューを簡単に使用するためのシンプルな Django アプリケーション。
django
>= 3.2python
>= 3.9 Pip 経由でパッケージをインストールします。
pip install ajax-views
INSTALLED_APPS
リストに追加します。
INSTALLED_APPS = (
# ...
"ajax_views" ,
# ...
)
ajax_views.urls
URLconf に追加します。
from django . urls import include , path
urlpatterns = [
path ( "ajax/" , include ( "ajax_views.urls" )),
]
このデコレータを使用して、ビュー (関数ベースまたはクラスベース) を登録します。
from ajax_views . decorators import ajax_view
@ ajax_view ( "myapp.form" )
def form_view ( request ):
...
@ ajax_view ( "myapp.form_cbv" )
class AjaxFormView ( FormView ):
...
注: 指定する名前は一意である必要があります。
ajax_view
他のデコレータと組み合わせることができます。
@ csrf_exempt
@ require_POST
@ ajax_view ( "myapp.contact_form" )
def csrf_exempt_view ( request ):
# ...
登録したURLをJSONとして出力するためのテンプレートタグです。
{% load ajax_views %}
<script>
window.ajax_views = {% ajax_views_json %};
</script>
これで、宣言されたオブジェクトを使用して、次のように対応する URL を参照できるようになります。
$ . ajax ( {
url : window . ajax_views . myapp . form ,
...
} ) ;
このタグは、テンプレート ファイルに AJAX URL を追加するために使用されます。
{% load ajax_views %}
<form action="{% ajax_url 'myapp.form' %}" method="post">
...
</form>
同じビューに複数の名前を付けることができます。
from ajax_views . decorators import ajax_view
@ ajax_view ([ "myapp.form" , "myapp.fallback" ])
def example_view ( request ):
...
Jinja2 拡張機能を有効にする
TEMPLATES = [
{
"BACKEND" : "django.template.backends.jinja2.Jinja2" ,
"OPTIONS" : {
"extensions" : [
# ...
"ajax_views.templatetags.ajax_views.AjaxViewsExtension" ,
]
}
}
]
注: django-jinja を使用している場合は、これを行う必要はありません。
使用法は Django と似ていますが、 ajax_url
がグローバル関数である点が異なります。
< form action = " {{ ajax_url('myapp.form') }} " method = " post " >
...
</ form >