English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Django Ajax 애플리케이션

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

먼저 해야 할 일은 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/ −

제출 후, 다음과 같은 표시 화면을 받게 됩니다 −