python - 抛出异常使用的字符串对象不可调用,django
问题描述
在 /test/ 处获取错误:TypeError
'str' 对象不可调用
表单视图:
class Test(FormView):
template_name = "pkm_templates/main.html"
form_class = "Testform"
success_url = '/thanks/'
def form_valid(self,form):
title = form.cleaned_data.get("title")
fkey = form.cleaned_data.get("fkey")
instance = Buildkb.objects.create(title=title,fkey=fkey)
for user in fkey:
instance.fkey.add(user)
instance.save()
return redirect("/")
网址:
path('test/',views.Test.as_view(),name="test")
对于另一个模型,我使用了 approch formview , modelform 和 url 相同,这个也不例外。
解决方案
如文件所述,form_class
应该是您的表单类对象,而不是它的名称:
# assuming TestForm is defined in "yourapp.forms"
from yourapp.forms import TestForm
class Test(FormView):
template_name = "pkm_templates/main.html"
form_class = Testform
# XXX you don't need this one since you're
# bypassing `FormView.form_valid()` and
# directly returning a redirect...
success_url = '/thanks/'
def form_valid(self,form):
title = form.cleaned_data.get("title")
fkey = form.cleaned_data.get("fkey")
instance = Buildkb.objects.create(title=title,fkey=fkey)
for user in fkey:
instance.fkey.add(user)
instance.save()
# Unrelated, but you should NOT hardcode urls
# - use `reverse()` instead
return redirect("/")
推荐阅读
- kubernetes - 使用 kubeadm join 命令加入现有集群时出现未经授权的错误
- r - r中的If-Else语句问题
- java - 哪个 JVM 实现可以在堆外或跨多个进程共享 Java 对象?
- android - Flutter - 将图像从一个页面来回推送到另一个页面
- r - 为什么 lubridate::mdy() 在我的输入中缺少日期时会添加日期?
- swift - 在 swift 中使用“PDFGenerator”生成 pdf
- git - 如何从 Windows 中删除 Homebrew?
- visual-studio - 从 Visual Studio 和 TFS 管理控制台连接到 TFS 服务器更改公共 URL 测试抛出错误 TF400324
- ffmpeg - 使用 HLS m3u8 或 DASH mpd 作为 ffmpeg 输入:寻求性能
- c# - 从 .NetNative DLL 导出函数