django+ajax+表格加载,djangoajax获取请求加载模型实例到表单中

博客作者正尝试在HTML模板中创建一个表,显示Django模型的所有实例,并为每行提供一个编辑按钮。点击按钮时,他们希望通过AJAX获取特定实例的详细信息,填充模态窗口进行编辑,然后使用AJAX更新数据库。目前遇到的问题是AJAX请求未能成功,导致错误日志输出。作者提供了相关代码,包括模型定义、URL配置、视图函数和HTML模板片段,寻求解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我在HTML模板中有一个表,它显示django模型的所有实例。在模板的每一行上,我都有一个edit按钮,它可以查找每个实例的主键,通过单击该按钮,我希望使用ajax以模式填充模型实例中的所有字段。之后,我希望能够编辑数据并使用ajax将编辑的数据发送回数据库。在

我在网上搜索了一下,发现this post正是我所需要的,但我还是无法使其工作。任何帮助都将不胜感激。在

jQuery代码var modalDiv = $("#modal-div");

$(".open-modal").on("click", function() {

console.log("button clicked");

var url = $(this).attr('data-url').replace('/', '');

console.log("url:",url); // this returns my customer number but is not used in the code below

$.ajax({

url: $(this).attr("data-url"),

type: 'get',

success: function(data) {

console.log("success");

modalDiv.html(data);

$("#myEdit").modal(); //#myEdit is the ID of the modal

},

error : function() {

console.log("Error: this did not work"); // provide a bit more info about the error to the console

}

});

});

表单中的标记

^{pr2}$

不用说,我一直收到错误控制台.log留言。

下面是完整的代码库。在

型号:class Kunde(models.Model):

avd = [('610','610'), ('615', '615'), ('620', '620'), ('625', '625'), '630', '630'), ('635', '635'),('640', '640'),('645', '645'), ('650', '650'), ('655', '655')]

avdeling = models.CharField(max_length=3, choices=avd)

selskap = models.CharField(max_length=50, unique=True)

kundenr = models.CharField('Kundenummer', max_length=15, unique=True, primary_key=True)

gatenavn = models.CharField(max_length=50,)

postnr = models.CharField('Postnummer', max_length=4)

poststed = models.CharField(max_length=30)

kommune = models.CharField(max_length=30)

timestamp = models.DateField(auto_now_add=True)

updated = models.DateField(auto_now=True)

def get_absolute_url(self):

return reverse("dashboard:index")

def __str__(self):

return self.selskap

class Meta:

ordering = ['selskap']

网址app_name = "dashboard"

urlpatterns = [

path('', views.dashboard, name='index'),

path('', views.customer_list, name='customer_list'),

url(r'^(?P[0-9]+)$', views.customer_update, name='customer_update'),

]

观点:

显示表格的主视图def dashboard(request):

template = 'dashboard/index.html'

if request.user.groups.filter(name__in=['Vest']).exists():

queryset = Kunde.objects.filter(Q(avdeling='630') | Q(avdeling='635')).all()

elif request.user.groups.filter(name__in=['Nord']).exists():

queryset = Kunde.objects.filter(Q(avdeling='610') | Q(avdeling='615') | Q(avdeling='620')).all()

elif request.user.groups.filter(name__in=['Øst']).exists():

queryset = Kunde.objects.filter(Q(avdeling='660') | Q(avdeling='655') | Q(avdeling='650')).all()

elif request.user.groups.filter(name__in=['Sør']).exists():

queryset = Kunde.objects.filter(Q(avdeling='640') | Q(avdeling='645')).all()

elif request.user.groups.filter(name__in=['Nord-Vest']).exists():

queryset = Kunde.objects.filter(Q(avdeling='625')).all()

else:

queryset = Kunde.objects.all()

context = {

"object_list": queryset,

}

return render(request, template, context)

视图以显示模态def customer_update(request, kundenr=None):

template = 'dashboard/index.html'

instance = get_object_or_404(Kunde, kundenr=kundenr)

context={

'selskap': instance.selskap,

'instance': instance,

}

return render(request, template, context)

HTML表格

AvdelingSelskapKundenr.PoststedKommuneRediger

{% for kunde in object_list %}

{{ kunde.avdeling }} {{ kunde.selskap }} {{ kunde.kundenr }} {{ kunde.poststed }} {{ kunde.kommune }}

Edit

{% endfor %}

这部分包括html中的模态

这是模态模板本身

实现图片上传可以分为以下几个步骤: 1. 在 Django 中创建一个视图函数用于处理图片上传请求。 ```python from django.shortcuts import render from django.core.files.storage import FileSystemStorage def upload(request): if request.method == 'POST' and request.FILES['image']: image = request.FILES['image'] fs = FileSystemStorage() filename = fs.save(image.name, image) uploaded_file_url = fs.url(filename) return render(request, 'upload.html', { 'uploaded_file_url': uploaded_file_url }) return render(request, 'upload.html') ``` 2. 在模板中添加一个表单用于上传图片。 ```html <form method="post" action="{% url 'upload' %}" enctype="multipart/form-data"> {% csrf_token %} <input type="file" name="image"> <button type="submit">Upload</button> </form> ``` 3. 配置 MySQL 数据库并创建一个图片模型用于存储上传的图片信息。 ```python from django.db import models class Image(models.Model): title = models.CharField(max_length=255, blank=True) image = models.ImageField(upload_to='images/') uploaded_at = models.DateTimeField(auto_now_add=True) ``` 4. 运行数据库迁移命令以在 MySQL 数据库中创建图片模型对应的表。 ```bash python manage.py makemigrations python manage.py migrate ``` 5. 修改上传处理视图函数,将上传的图片信息保存到数据库。 ```python from django.shortcuts import render, redirect from django.core.files.storage import FileSystemStorage from .models import Image def upload(request): if request.method == 'POST' and request.FILES['image']: image = request.FILES['image'] fs = FileSystemStorage() filename = fs.save(image.name, image) uploaded_file_url = fs.url(filename) image = Image.objects.create(image=filename) return redirect('image_detail', pk=image.pk) return render(request, 'upload.html') ``` 6. 添加一个展示图片信息的视图函数和模板。 ```python from django.shortcuts import render, get_object_or_404 from .models import Image def image_detail(request, pk): image = get_object_or_404(Image, pk=pk) return render(request, 'image_detail.html', {'image': image}) ``` ```html <img src="{{ image.image.url }}" alt="{{ image.title }}"> ``` 7. 最后,配置 MySQL 数据库连接信息,并启动 Django 服务器。 ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mydatabase', 'USER': 'mydatabaseuser', 'PASSWORD': 'mypassword', 'HOST': 'localhost', 'PORT': '3306', } } ``` 以上就是 Django+MySQL 实现图片上传的基本步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值