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

Introdução Rápida ao Django

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

Usar Django-static

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

-