gpt4 book ai didi

python - Django从get方法获取数据并传递给post方法

转载 作者:行者123 更新时间:2023-12-01 01:38:56 27 4
gpt4 key购买 nike

我试图将数据从 get 方法传递到 post 方法,这样我就可以通过表单更新我的数据库数据。在下面的代码中,特别是我尝试使用类级别变量“saved_objectID”将 editObjectID 从 get 方法传递到 post 方法。但我总是得到空白值/没有值。

有办法实现吗?预先感谢您的帮助

class EditDataView(ListView):
model =TemporaryModel
form_class = TemporaryForm
template_name = 'frontend/editData.html'
dict = { "EditData":"Edit Data Below"}
saved_objectID = ''

def get(self, request, *args, **kwargs):
editObjectId = request.GET.get('editObjectId')
editObjects = TemporaryModel.objects.get(pk=editObjectId)
saved_objectID = editObjectId
form = TemporaryForm(instance=editObjects)
return render(request, 'frontend/editData.html', {'form': form,"dict":dict})

def post(self, request, *args, **kwargs):
form = TemporaryForm(request.POST, instance=TemporaryModel.objects.get(pk=self.saved_objectID))
if form.is_valid():
form.save()
return render(request, 'frontend/editData.html', {'form': form,"dict":dict})

最佳答案

这取决于您如何部署 Django 应用程序。我想在你的情况下,你的http服务器使用 process满足用户请求。

因此,两个不同的用户操作 get & post尽管 saved_objectID 处于两个不同的进程中都是 EditDataView 的类(class)成员,但是两个EditDataView在两个不同的python进程中。因此,您无法获取该值。

通常,不要让两个不同的请求通过内存中的变量进行通信,即使它可以留在同一个进程中,因为您更改了http服务器部署模式,您仍然无法摆脱其他干扰(例如其他用户请求的序列) )。

对于您的场景,为什么不直接返回 saved_objectID使用 hidden variable 到用户的浏览器?或者如果您关心安全性,也可以使用redis ,存储saved_objectID作为 redis 中的值并将 key 返回给用户的浏览器。

总之,不要使用内存中的变量来通信,在多进程环境下什么都保证不了,如果确实需要就找一个独立的产品吧。

关于python - Django从get方法获取数据并传递给post方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52108846/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com