Envío de formulario Django sin recarga de página

Django es un marco web Python de alto nivel que fomenta un desarrollo rápido y un diseño limpio y pragmático. Creado por desarrolladores experimentados, se encarga de gran parte de las molestias del desarrollo web, por lo que puede concentrarse en escribir su aplicación sin necesidad de reinventar la rueda. Es gratis y de código abierto.

En este artículo veremos el envío de formularios en django sin recargar la página usando Jquery y Ajax

Para instalar django, abra cmd o terminal y escriba el siguiente comando

pip3 install django

Luego crea un nuevo proyecto

django-admin startproject newproj
cd newproj

Luego, para crear una nueva aplicación. 

ventanas

python manage.py startapp main

ubuntu

python3 manage.py startapp main

Agrega el nombre de tu aplicación en settings.py

Cree un nuevo directorio dentro de la aplicación y nómbrelo como plantillas dentro que crean otro directorio y nómbrelo como principal (el nombre de su aplicación)

Ejecute este comando para migrar

python manage.py migrate

Crear nuevo modelo dentro de models.py

modelos.py

Python3

from django.db import models
  
# Create your models here.
class Todo(models.Model):
    task = models.CharField(max_length=200)
  
    def __str__(self):
        return f"{self.task}"
python manage.py makemigrations
python manage.py migrate

administrador.py

Python3

from django.contrib import admin
from .models import *
# Register your models here.
  
admin.site.register(Todo)

Cree un nuevo archivo dentro del directorio de plantillas y asígnele el nombre form.html

HTML

<!DOCTYPE html>
<html>
<head>
    <title>Todo List</title>
</head>
<body>
    <form method="post" id="task-form">
        {% csrf_token %}
        <input type="text" placeholder="Enter Task" name="task" id="task" required>
        <button type="submit">Save</button>
    </form>
  
    <script src="https://code.jquery.com/jquery-3.5.1.js" 
          integrity="sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc=" 
            crossorigin="anonymous"></script>
  
    <script type="text/javascript">
    $(document).on('submit','#task-form',function(e){
        e.preventDefault();
        $.ajax({
            type:'POST',
            url:'{% url "home" %}',
            data:
            {
                task:$("#task").val(),
                csrfmiddlewaretoken:$('input[name=csrfmiddlewaretoken]').val()
            },
            success:function(){
                  alert('Saved');
                    }
            })
        });
    </script>
  
</body>
</html>

Cree una nueva vista dentro de views.py para manejar la solicitud de obtención y publicación.

Python3

from django.shortcuts import render
from .models import Todo
# Create your views here.
def home(request):
    if request.method == 'POST':
        task=request.POST.get('task')
        print(task)
        new = Todo(task=task)
        new.save()
    return render(request,"main/form.html")

Cree un nuevo archivo dentro de su aplicación y asígnele el nombre urls.py

Python3

from django.urls import path
from .views import *
  
urlpatterns = [
    path('',home,name="home"),
]

Agregue main.urls en las URL del proyecto

miproyecto/urls.py

Python3

from django.contrib import admin
from django.urls import path,include
  
urlpatterns = [
    path('admin/', admin.site.urls),
    path('',include("main.urls"))
]

Para ejecutar el comando de escritura de la aplicación

python manage.py runserver

Producción

Página de administrador

Publicación traducida automáticamente

Artículo escrito por vivekpisal12345 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 *