Manejo de solicitud de Ajax en Django

 

Introducción 

Este tutorial explica cómo realizar una solicitud ajax en el marco web de Django. Crearemos una aplicación simple de post-me gusta como parte del ejemplo.

Glosario

  • Inicialización del proyecto
  • Crear modelos
  • Crear vistas
  • Escribir URL
  • Realizar una solicitud con Jquery Ajax.
  • Registre modelos para administrar y agregue algunas publicaciones.

Implementación: 

1. Inicie el proyecto Django:  aquí asumo que ha terminado con la instalación de Django.

  • Para crear un proyecto Django, ejecute: 
$ django-admin startproject django_example
  • Después de crear un proyecto, necesitamos crear una aplicación Django. Para crear una aplicación, diga «publicar» ejecute lo siguiente: 
$ cd django_example
$ python manage.py startapp post 
  • Vaya a django_example/settings.py agregue la aplicación posterior

 

  • Ahora tendrás archivos como este:
Handling Ajax request in Django

 

2. Crear modelos:  para crear modelos, vaya al directorio de publicaciones y abra models.py. 

  • En modelos.py. Primero, cree una tabla de publicaciones. Para crear una tabla de publicaciones, deberá escribir:
class Post(models.Model):
    post_heading = models.CharField(max_length=200)
    post_text = models.TextField()
        def __unicode__(self):      # If python2 use __str__ if python3
                return unicode(self.post_heading)
  • Luego, en models.py, crea como una tabla. Para crear como una tabla, deberá escribir:
class Like(models.Model):
    post = models.ForeignKey(Post, on_delete = models.CASCADE)
  • Hacer migración y paso de migración: 
$ python manage.py makemigrations
$ python manage.py migrate

Después de completar estos pasos, tenemos nuestras tablas de base de datos listas para usar. 

3. Crear vistas: 

Para crear vistas, debemos ir al directorio de publicaciones y abrir views.py 

  • Primero, importe modelos creados previamente y respuesta HTTP
from .models import Post, Like
from django.http import HttpResponse
  • Cree una vista de índice para representar todas las publicaciones. Ejemplo de código:
def index(request):
    posts = Post.objects.all()  # Getting all the posts from database
    return render(request, 'post/index.html', { 'posts': posts })
  • Cree una vista de publicaciones similares para dar me gusta a una publicación. Esta vista se llamará cuando presionemos un botón de «me gusta». Ejemplo de código:
def likePost(request):
    if request.method == 'GET':
           post_id = request.GET['post_id']
           likedpost = Post.objects.get(pk=post_id) #getting the liked posts
           m = Like(post=likedpost) # Creating Like Object
           m.save()  # saving it to store in database
           return HttpResponse("Success!") # Sending an success response
    else:
           return HttpResponse("Request method is not a GET")

Una vez que se crea nuestra vista, pasaremos a escribir una plantilla y jQuery para realizar una solicitud ajax.

4. Crear direcciones URL:

Para crear direcciones URL, abra django_example/urls.py. Tu django_example/urls.py debería verse así:

from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
     url(r'^admin/', admin.site.urls),
     url(r'^', include('post.urls')),   # To make post app available at /
   ]

Para crear direcciones URL, cree el archivo post/urls.py. Tu post/urls.py debería verse así: 

from django.conf.urls import url
from . import views
urlpatterns = [
        url(r'^$', views.index, name='index'),  # index view at /
        url(r'^likepost/$', views.likePost, name='likepost'),   # likepost view at /likepost
   ]

5. Realización de plantillas y realización de peticiones ajax: 

  • Crea un archivo post/templates/post/index.html. Ejemplo de código:
<!DOCTYPE html>
<html>
<head>
    <title>Like Post App</title>
</head>
<body>
    <p id="message"></p>
    {% for post in posts %}
    <h3>{{ forloop.counter }}) {{ post.post_heading }}</h3>
    <p>{{ post.post_text }} </p>
    <a class="likebutton" id="like{{post.id}}" href="#" data-catid="{{ post.id }}">Like</a>
    {% endfor %}
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
    <script type="text/javascript">
    $('.likebutton').click(function(){
    var catid;
    catid = $(this).attr("data-catid");
    $.ajax(
    {
        type:"GET",
        url: "/likepost",
        data:{
                 post_id: catid
        },
        success: function( data ) 
        {
            $( '#like'+ catid ).remove();
            $( '#message' ).text(data);
        }
     })
});
</script>
</body>
</html>
Basically, what we are doing here is - we are making an ajax get request -> /likepost?post_id=<id_of_liked_post>

6. Para registrar modelos para administrar y agregar algunas publicaciones: 

  • Abra post/admin.py.
  • Importar modelos a admin.py.
from .models import Post, Like
  • Registre sus modelos: 
admin.site.register(Post)
admin.site.register(Like)

Ahora agregue algunas publicaciones utilizando el portal de administración predeterminado de Django. Visite http://localhost:8000/ para ver y dar me gusta a las publicaciones. También agregué esta aplicación de muestra a mi github que puede usar como referencia.

Este blog está escrito por Anshul Singhal.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *