gpt4 book ai didi

Django 'str' 对象没有属性 'get'

转载 作者:行者123 更新时间:2023-12-03 22:57:50 24 4
gpt4 key购买 nike

我试图在完成表单后将用户重定向到另一个页面而不保存。但是,当我使用 reverse 函数时,出现错误:'str' object has no attribute 'get'
在下面基于类的 View 中, self.object.thing_id 打印它应该打印的数据。

基于类的 View :

class ThingUpdateView(LoginRequiredMixin, UpdateView):
def form_valid(self, form):
if self.object.status != 'initiated':
print(self.object.thing_id)
return reverse('thing:detail', kwargs={'thing_id': str(self.object.thing_id) })
return super().form_valid(form)

即使 reverse('thing:list') 也给出了同样的错误

App Things 的 urls.py
url(r'^$', ThingListView.as_view(), name='list'),
url(r'^(?P<thing_id>[0-9A-Za-z]+)/$', ThingDetailView.as_view(), name='detail'),
url(r'^update/(?P<thing_id>[0-9A-Za-z]+)/$', ThingUpdateView.as_view(), name='update'),

当用户点击 html 页面上的提交按钮时会发生此错误。它启动表单,然后路由到 form_valid 部分。 self.objectstatus != 'initiated' 所以它试图做相反的返回。

这是堆栈跟踪:
Traceback:

File "C:\Users\Starlord\Dev\ecommerce\lib\site-packages\django\core\handlers\exception.py" in inner
41. response = get_response(request)

File "C:\Users\Starlord\Dev\ecommerce\lib\site-packages\django\utils\deprecation.py" in __call__
142. response = self.process_response(request, response)

File "C:\Users\Starlord\Dev\ecommerce\lib\site-packages\django\middleware\clickjacking.py" in process_response
32. if response.get('X-Frame-Options') is not None:

Exception Type: AttributeError at /things/update/vd2dqvw3nw/
Exception Value: 'str' object has no attribute 'get'

最佳答案

使用 HttpResponseRedirect反而

from django.http import HttpResponseRedirect

return HttpResponseRedirect(reverse('thing:detail', kwargs={'thing_id':self.object.thing_id}))

关于Django 'str' 对象没有属性 'get',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50731218/

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