ajax views
1.0.0
一個簡單的 Django 應用程序,可透過 JavaScript 輕鬆使用 AJAX 視圖。
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 >