抛出异常使用字符串对象是不可调用的,djang

2024-07-03 06:00:58 发布

您现在位置:Python中文网/ 问答频道 /正文

获取错误:TypeError at/test/

“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")

对于我使用的另一个模型approchformview,modelform和url相同,这一个也不例外


Tags: instancenametestformurldatagettitle
1条回答
网友
1楼 · 发布于 2024-07-03 06:00:58

As documentedform_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("/")

相关问题 更多 >