English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Ajax는 주로 페이지 부하를 줄이기 위해 통합된 기술의 조합입니다. 우리는 일반적으로 Ajax를 사용하여 최종 사용자 경험을 완화합니다. Django에서 Ajax를 사용하면 jQuery나 다른 Ajax 라이브러리를 직접 사용할 수 있습니다. 예를 들어, jQuery를 사용하려면 라이브러리를 다운로드하고 Apache나 다른 서버를 통해 서비스해야 합니다. 그런 다음, 템플릿에서 사용하여 Ajax 기반 애플리케이션을 개발할 수 있습니다.
Django에서 Ajax를 사용하는 또 다른 방법은 Django의 Ajax 프레임워크를 사용하는 것입니다. 가장 일반적으로 사용되는 것은 django입니다.-dajax는 강력한 도구로, Python을 사용하여 JavaScript 소스 코드가 거의 필요 없이 비동기 로직을 표현하고 Web 애플리케이션을 매우 빠르게 개발할 수 있습니다. 이는 Prototype, jQuery, Dojo, MooTools와 같은 네 가지 가장 인기 있는 js 프레임워크를 지원합니다.
먼저 해야 할 일은 django를 설치하는 것입니다.-dajax. 이는 easy_install 또는 pid를 사용하여 −
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 $ pip install django_dajax $ easy_install django_dajax
이는 자동으로 django를 설치합니다.-dajaxice, django에 따라-dajaxice 요구합니다. 그런 다음, Ajax와 dajaxice를 구성해야 합니다.
settings.py에 dajax와 dajaxice를 추가하여 INSTALLED_APPS 선택 프로젝트 −
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 INSTALLED_APPS += ( 'dajaxice', 'dajax' )
동일한 settings.py 파일에서 다음 설정이 있는지 확인하세요 −
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 TEMPLATE_LOADERS = ( 'django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader', 'django.template.loaders.eggs.Loader', ) TEMPLATE_CONTEXT_PROCESSORS = ( 'django.contrib.auth.context_processors.auth', 'django.core.context_processors.debug', 'django.core.context_processors.i18n', 'django.core.context_processors.media', 'django.core.context_processors.static', 'django.core.context_processors.request', 'django.contrib.messages.context_processors.messages' ) STATICFILES_FINDERS = ( 'django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', 'dajaxice.finders.DajaxiceFinder', ) DAJAXICE_MEDIA_PREFIX = 'dajaxice'
지금 myapp을 열어보세요/url.py 파일을 열어 다음 설정이 있는지 확인하세요dajax URL과 dajax 정적 js 파일을 로드하기 위해 −
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 from dajaxice.core import dajaxice_autodiscover, dajaxice_config from django.contrib.staticfiles.urls import staticfiles_urlpatterns from django.conf import settings Then dajax urls: urlpatterns += patterns('', url(r'^%s/'% settings.DAJAXICE_MEDIA_PREFIX, include('dajaxice.urls')),) urlpatterns += staticfiles_urlpatterns()
Dreamreal 모델을 기반으로 한 간단한 테이블을 생성하여 저장합니다. Ajax(무�新청)을 사용합니다.
먼저, myapp/form.py의 Dreamreal 폼.
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 class DreamrealForm(forms.Form): website = forms.CharField(max_length = 100) name = forms.CharField(max_length = 100) phonenumber = forms.CharField(max_length = 50) email = forms.CharField(max_length = 100)
그런 다음,应用程序의ajax.py 파일: myapp/ajax.py. 이곳은 관련 로직이 있습니다. 우리는 폼을 저장하고 팝업 표시 결과를 반환합니다 -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 from dajaxice.utils import deserialize_form from myapp.form import DreamrealForm from dajax.core import Dajax from myapp.models import Dreamreal @dajaxice_register def send_form(request, form): dajax = Dajax() form = DreamrealForm(deserialize_form(form)) if form.is_valid(): dajax.remove_css_class('#my_form input', 'error') dr = Dreamreal() dr.website = form.cleaned_data.get('website') dr.name = form.cleaned_data.get('name')} dr.phonenumber = form.cleaned_data.get('phonenumber') dr.save() dajax.alert("Dreamreal Entry %s was successfully saved." % form.cleaned_data.get('name')) else: dajax.remove_css_class('#my_form input', 'error') for error in form.errors: dajax.add_css_class('#id_%s' % error, 'error') return dajax.json()
이제, 필요한 템플릿 dreamreal.html을 생성해 보겠습니다 -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 <html> <head></<head> <body> <form action="" method="post" id="my_form" accept-charset="utf-8"> {{ form.as_p }} <p><input type="button" value="Send" onclick="send_form();"></<p> </<form> </<body> </<html>
추가적으로, 템플릿 뷰: myapp에 대해 추가합니다/views.py −
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 def dreamreal(request): form = DreamrealForm() return render(request, 'dreamreal.html', locals())
myapp에 대한 적절한 URL을 추가합니다/urls.py −
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 url(r'^dreamreal',/', 'dreamreal', name='dreamreal'),
Ajax 작동을 위해 필요한 코드를 템플릿에 추가합니다 -
파일의 상단에 추가합니다 -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 {% load static %} {% load dajaxice_templatetags %}
dreamreal.html 템플릿의 <head> 부분에 추가합니다 -
JQuery 라이브러리를 사용하여 이 예제에 대해 이 코드를 추가합니다 -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 <script src = "{% static '/static/jquery-1.11.3.min.js' %}" type = "text/javascript" charset = "utf-8></script> <script src = "{% static '/static/dajax/jquery.dajax.core.js' %}"></script>
点击将会调用 Ajax 函数−
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 <script> function send_form(){ Dajaxice.myapp.send_form(Dajax.process,{'form':$('#my_form').serialize(true)}); } </script>
请注意,需要在静态文件目录添入 “jquery-1.11.3.min.js”,也是 jquery.dajax.core.js。 为了确保所有 dajax 静态文件的静态目录服务,运行 -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 $python manage.py collectstatic
주의사항 - 有时 jquery.dajax.core.js 可以缺失,如果出现这种情况,只需下载源代码并把它放在静态文件夹中。
접근하면 아래와 같은 화면을 볼 수 있습니다, /myapp/dreamreal/ −
제출 후, 다음과 같은 표시 화면을 받게 됩니다 −