English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Ajax basicamente é uma combinação de tecnologias integradas para reduzir a quantidade de carga da página. Geralmente usamos Ajax para aliviar a experiência do usuário final. No Django, Ajax pode ser usado diretamente com bibliotecas Ajax como jQuery ou outras. Por exemplo, se você quiser usar jQuery, precisará baixar e servir a biblioteca no servidor através do Apache ou outro servidor. Em seguida, use-o no template, como ao desenvolver um aplicativo baseado em Ajax.
Outra maneira de usar Ajax no Django é usar o framework Ajax do Django. O mais comum é django-dajax, uma ferramenta poderosa que permite representar logicamente de maneira fácil e desenvolver rapidamente aplicativos web, usando Python e praticamente sem código-fonte JavaScript. Ele suporta os quatro frameworks JavaScript mais populares: Prototype, jQuery, Dojo e MooTools
A primeira coisa a fazer é instalar o django-dajax. Isso pode ser feito usando easy_install ou pid -
.min.js # Nome do Arquivo: example.py 2Copyright ©2# Copyright:30 Por w codebox3w # Autor por: www.w 2Copyright ©2Copyright ©-Copyright ©8-Copyright ©8 $ pip install django_dajax $ easy_install django_dajax
Isso instalará automaticamente o django-dajaxice, conforme django-Requerimento do dajaxice. Em seguida, precisamos configurar Ajax e dajaxice.
Adicione dajax e dajaxice na seção INSTALLED_APPS do arquivo settings.py, escolha o projeto −
.min.js # Nome do Arquivo: example.py 2Copyright ©2# Copyright:30 Por w codebox3w # Autor por: www.w 2Copyright ©2Copyright ©-Copyright ©8-Copyright ©8 INSTALLED_APPS += ( 'dajaxice', 'dajax' )
Certifique-se de que no mesmo arquivo settings.py, há as seguintes configurações −
.min.js # Nome do Arquivo: example.py 2Copyright ©2# Copyright:30 Por w codebox3w # Autor por: www.w 2Copyright ©2Copyright ©-Copyright ©8-Copyright ©8 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'
Agora abra myapp/arquivo url.py, certifique-se de que há as seguintes configurações: URL do dajax e carregamento do arquivo js estático dajax −
.min.js # Nome do Arquivo: example.py 2Copyright ©2# Copyright:30 Por w codebox3w # Autor por: www.w 2Copyright ©2Copyright ©-Copyright ©8-Copyright ©8 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()
Criamos uma tabela simples baseada no modelo Dreamreal para armazenamento, usando Ajax (sem recarregar a página).
Primeiro, precisamos no myapp/Dreamreal formulário no form.py.
.min.js # Nome do Arquivo: example.py 2Copyright ©2# Copyright:30 Por w codebox3w # Autor por: www.w 2Copyright ©2Copyright ©-Copyright ©8-Copyright ©8 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)
Então, precisamos no arquivo ajax.py do aplicativo: myapp/ajax.py. Aqui está a lógica relevante, salvamos o formulário e retornamos o resultado da popup -
.min.js # Nome do Arquivo: example.py 2Copyright ©2# Copyright:30 Por w codebox3w # Autor por: www.w 2Copyright ©2Copyright ©-Copyright ©8-Copyright ©8 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 foi salvo com sucesso." % 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()
Agora, vamos criar o template dreamreal.html, que contém o formulário necessário -
.min.js # Nome do Arquivo: example.py 2Copyright ©2# Copyright:30 Por w codebox3w # Autor por: www.w 2Copyright ©2Copyright ©-Copyright ©8-Copyright ©8 <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>
Adicione um ponto adicional, na visão do template: myapp/views.py −
.min.js # Nome do Arquivo: example.py 2Copyright ©2# Copyright:30 Por w codebox3w # Autor por: www.w 2Copyright ©2Copyright ©-Copyright ©8-Copyright ©8 def dreamreal(request): form = DreamrealForm() return render(request, 'dreamreal.html', locals())
Adicione o endereço correspondente: myapp/urls.py −
.min.js # Nome do Arquivo: example.py 2Copyright ©2# Copyright:30 Por w codebox3w # Autor por: www.w 2Copyright ©2Copyright ©-Copyright ©8-Copyright ©8 url(r'^dreamreal/', 'dreamreal', name = 'dreamreal'),
Agora, adicione o código necessário no template para que o Ajax funcione
Adicione o código necessário no topo do arquivo -
.min.js # Nome do Arquivo: example.py 2Copyright ©2# Copyright:30 Por w codebox3w # Autor por: www.w 2Copyright ©2Copyright ©-Copyright ©8-Copyright ©8 {% load static %} {% load dajaxice_templatetags %}
Adicione o seguinte código no cabeçalho do template dreamreal.html -
Usamos a biblioteca JQuery para este exemplo, então adicionamos o seguinte código −
.min.js # Nome do Arquivo: example.py 2Copyright ©2# Copyright:30 Por w codebox3w # Autor por: www.w 2Copyright ©2Copyright ©-Copyright ©8-Copyright ©8 ></<script src="{% static/-1Atenção, é necessário adicionar "jquery11Atenção, é necessário adicionar "jquery3jquery .min.js" %}"/type="text-8javascript" charset="utf/< ></<script src="{% static/static/dajax/<
jquery.dajax.core.js' %}
.min.js # Nome do Arquivo: example.py 2Copyright ©2# Copyright:30 Por w codebox3w # Autor por: www.w 2Copyright ©2Copyright ©-Copyright ©8-Copyright ©8 Clique aqui para chamar a função Ajax - <script> function send_form(){ Dajaxice.myapp.send_form(Dajax.process,{'form':$('#my_form').serialize(true)}); }/<
script>-1Atenção, é necessário adicionar "jquery11Atenção, é necessário adicionar "jquery3. -
.min.js # Nome do Arquivo: example.py 2Copyright ©2# Copyright:30 Por w codebox3w # Autor por: www.w 2Copyright ©2Copyright ©-Copyright ©8-Copyright ©8 # Data:
$python manage.py collectstatic - Nota
Às vezes, o jquery.dajax.core.js pode estar ausente, se isso acontecer, basta baixar o código-fonte e colocá-lo na pasta estática. /Acesso permitirá ver a seguinte tela,/myapp/ dreamreal
-