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:
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