Как сделать updateview в django с помощью ajax

models.py

from django.db import models

# Create your models here.

class Login(models.Model):
    username=models.TextField(max_length=30)
    password=models.TextField(max_length=30)

class CreateProduct(models.Model):
    title = models.CharField(max_length=200)
    description = models.CharField(max_length=200)
    image = models.FileField(blank=True)

    def __str__(self):
         return self.title

views.py

from django.db import models
from django.db.models import fields
from django.shortcuts import redirect, render
from django.views.generic import TemplateView,CreateView,FormView,ListView,DetailView
from django.views.generic.edit import UpdateView
from django.contrib.auth.models import User,auth


from .models import CreateProduct

from django.urls import reverse_lazy
from django.shortcuts import get_object_or_404

# Create your views here.
def home(request):
    return render(request,'index.html')

def login(request):
    if request.method=="POST":
        username=request.POST['username']
        password=request.POST['password']
        
        user = auth.authenticate(username=username, password=password)
        if user is not None:
            auth.login(request, user)
            return redirect('productslist')
        else:
            return redirect('/')
    else:
        return render(request, 'index.html')

class ProductsList(ListView):
     model = CreateProduct
     context_object_name = 'products'
     template_name = "productslist.html"  
    

class ProductsCreate(CreateView):
    model = CreateProduct
    fields = ['title','description','image']
    template_name = "productscreate.html"     
    success_url=reverse_lazy('productslist')


class ProductsDetailView(DetailView):
     template_name = "productsdetail.html"
     queryset = CreateProduct.objects.all()
     context_object_name = 'products'
     model = CreateProduct


class ProductsUpdate(UpdateView):
    model = CreateProduct
    fields = ['title','description','image']
    template_name = "productsupdate.html"     
    queryset = CreateProduct.objects.all()
    success_url=reverse_lazy('productsdetail')

     

productdetail.html

<!DOCTYPE html>
{% load static %}
<html lang="en">
<head>
  <!-- <title>Bootstrap Example</title> -->
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
  <nav class="navbar navbar-inverse">
    <div class="container-fluid">
      <!-- <div class="navbar-header">
        <a class="navbar-brand" href="#">WebSiteName</a>
      </div> -->
      <ul class="nav navbar-nav">
        <li class="active"><a href="/">Home</a></li>
      <ul class="nav navbar-nav navbar-right">
        <li><a href="{% url 'productscreate' %}"><span></span>Create</a></li>
        <li><a href="{% url 'productslist' %}"><span></span>Product Lists</a></li>
    
      </ul>
    </div>
  </nav>
    <h1 style="text-align: center;">PRODUCTS DETAILVIEW</h1>

    <form>
     Title:- {{products.title }} <br><br>
     
     Description:- {{ products.description}}<br><br>

     Image :- <img src="{{products.image.url}}"><br><br>
 
     <input type="submit" value="Edit" href="{% url 'productsupdate' product.id %}">
    </form>
    


</body>
</html>

productcreate.html

productupdate.html

<!DOCTYPE html>
{% load static %}
<html lang="en">
<head>
  <!-- <title>Bootstrap Example</title> -->
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
    <nav class="navbar navbar-inverse">
        <div class="container-fluid">
          <!-- <div class="navbar-header">
            <a class="navbar-brand" href="#">WebSiteName</a>
          </div> -->
          
        </div>
      </nav>

<h1>Create Products</h1>

    <form method="post">
        {% csrf_token %}
        <table>
    <tr>
        <td>Title:<br>
        <input type="text" name="title" id="title"></td>
        <br>
    </tr>
    <tr>
        <td>Description:<br>
        <textarea name="description" id="description">Description</textarea></td>
        <br>
    </tr>
    <tr>
        <td>Image:<br>
        <input type="file" name="image" id="image"></td>
        <br>
    </tr>
    
    <tr>
        <td><button type="button" id="update">Update</button></td>
    </tr>

</table>
</form>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.3.0/knockout-min.js"></script>
<script>
  var formData = new FormData();
 
    $(document).on('click', '#submit', function(e) {
      formData.append('title', $('#title').val())
      formData.append('description', $('#description').val())
      formData.append('image',  $('#image')[0].files[0])
      formData.append('action', 'create-post')
      formData.append('csrfmiddlewaretoken', '{{ csrf_token }}')
        $.ajax({
            type: 'POST',
            url: '{% url "productscreate" %}',
            data: formData,
            cache: false,
            processData: false,
            contentType: false,
            enctype: 'multipart/form-data',
            success: function (){
                window.location = '{% url "productslist" %}'; 
            },
            error: function(xhr, errmsg, err) {
                console.log(xhr.status + ":" + xhr.responseText)
            }
        })
    })
</script>


</body>
</html>    

Я хочу кнопку редактирования на странице подробностей и когда я нажимаю кнопку редактирования, она должна отображать форму обновления и после того, как я нажму кнопку обновления, она должна обновить страницу подробностей. В этом коде обновление не работает Как редактировать и обновлять с помощью пользовательской формы django, используя ajax пожалуйста, помогите мне Заранее спасибо

Вернуться на верх