Django form_valid causes TypeError:quote_from_bytes()预期字节

Django form_valid causes TypeError:quote_from_bytes()预期字节,django,django-views,Django,Django Views,我的表单集基于CRUD方法。从这里和那里获取代码。我无法理解它产生的错误: Internal Server Error: /create/(?P2[\w-]+)/$ Traceback (most recent call last): File "C:\Python39\lib\site-packages\django\core\handlers\exception.py", line 47, in inner response = get_response(re

我的表单集基于CRUD方法。从这里和那里获取代码。我无法理解它产生的错误:

Internal Server Error: /create/(?P2[\w-]+)/$
Traceback (most recent call last):
  File "C:\Python39\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
    response = get_response(request)
  File "C:\Python39\lib\site-packages\django\core\handlers\base.py", line 179, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Python39\lib\site-packages\django\views\generic\base.py", line 70, in view
    return self.dispatch(request, *args, **kwargs)
  File "C:\Python39\lib\site-packages\django\views\generic\base.py", line 98, in dispatch
    return handler(request, *args, **kwargs)
  File "C:\Python39\lib\site-packages\django\views\generic\edit.py", line 172, in post
    return super().post(request, *args, **kwargs)
  File "C:\Python39\lib\site-packages\django\views\generic\edit.py", line 142, in post
    return self.form_valid(form)
  File "C:\Projects\hosp_app\doc_aide\views.py", line 84, in form_valid
    return super().form_valid(form)
  File "C:\Python39\lib\site-packages\django\views\generic\edit.py", line 126, in form_valid
    return super().form_valid(form)
  File "C:\Python39\lib\site-packages\django\views\generic\edit.py", line 57, in form_valid
    return HttpResponseRedirect(self.get_success_url())
  File "C:\Python39\lib\site-packages\django\http\response.py", line 465, in __init__
    self['Location'] = iri_to_uri(redirect_to)
  File "C:\Python39\lib\site-packages\django\utils\encoding.py", line 147, in iri_to_uri
    return quote(iri, safe="/#%[]=:;$&()+,!?*@'~")
  File "C:\Python39\lib\urllib\parse.py", line 853, in quote
    return quote_from_bytes(string, safe)
  File "C:\Python39\lib\urllib\parse.py", line 878, in quote_from_bytes
    raise TypeError("quote_from_bytes() expected bytes")
TypeError: quote_from_bytes() expected bytes
它所基于的Formset类如下所示:

表格和视图如下所示:

class PrescriptionCreate(generic.CreateView):
模型=处方
模板名称='doc\u aide/write\u prescription4.html'
表格\类别=处方表格
def获取上下文数据(自身,**kwargs):
打印('here')
context=super()。获取上下文数据(**kwargs)
如果self.request.POST:
context['line_prescription']=SinglePrescriptionFormset(self.request.POST)
其他:
上下文['line_prescription']=SinglePrescriptionFormset()
上下文['form'].fields['patient'].initial=patient.objects.get(pk=self.kwargs['patient'])
返回上下文
def表单_有效(自身、表单):
打印('Ia am here')
context=self.get\u context\u data()
处方行=上下文[“处方行”]
使用transaction.atomic():
form.instance.created_by=self.request.user
self.object=form.save()
如果处方行。是否有效()
prescriptionlines.instance=self.object
prescriptionlines.save()
返回super().form_有效(form)
def get_success_url(自我):
返回reverse\u lazy('doc\u aide:prescription\u detail',kwargs={'pk':self.object.pk})

有人能帮忙吗?

在您的
获取成功\u url
方法中,您正在使用
反向\u lazy
返回url,该方法返回一个对象,
获取成功\u url
应该返回一个字符串。您应该使用
反向

def get_success_url(self):
        return reverse('doc_aide:prescription_detail', kwargs={'pk': self.object.pk})

另外,在您的表单中,最后您使用的是
return super()。form\u valid(form)
,这可能会给您带来一些麻烦,因为super类的form\u valid方法也将保存表单。相反,将其更改为
return-HttpResponseRedirect(self.get\u success\u url())
get\u success\u url
方法中,您使用
reverse\u lazy
返回url,该方法返回一个对象,
get\u success\u url
应该返回一个字符串。您应该使用
反向

def get_success_url(self):
        return reverse('doc_aide:prescription_detail', kwargs={'pk': self.object.pk})
另外,在您的表单中,最后您使用的是
return super()。form\u valid(form)
,这可能会给您带来一些麻烦,因为super类的form\u valid方法也将保存表单。改为
返回HttpResponseRedirect(self.get\u success\u url())