【发布时间】:2018-08-15 00:10:46
【问题描述】:
我在遵循 Django 文档以使用模型表单时收到 quote_from_bytes() expected bytes 错误。它似乎写入 SQLite DB,但每次我填写表格时都会出现此错误。我正在运行 Django 2.0.2 版和 Python 3.5 版。
forms.py
from django.forms import ModelForm
from .models import *
class inputforms(ModelForm):
class Meta:
model = Inputform
fields = ['auditid', 'audittask', 'responsibleperson', 'auditstatus', 'auditnotes', 'auditdate']
views.py
def inputview(request):
form = inputforms(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect(reverse, 'auditpage')
args = {'form': form}
return render(request, 'auditentry.html', args)
models.py
class Inputform(models.Model):
auditid = models.IntegerField(blank=True, null=True)
audittask = models.TextField(blank=True, null=True)
responsibleperson = models.TextField(blank=True, null=True)
auditstatus = models.TextField(blank=True, null=True)
auditnotes = models.TextField(blank=True, null=True)
auditdate = models.TextField(blank=True, null=True)
class Meta:
managed = False
db_table = 'inputform'
追溯
Traceback (most recent call last):
File "/home/PycharmProjects/project/venv/lib/python3.5/site-packages/django/core/handlers/exception.py", line 35, in inner
response = get_response(request)
File "/home/PycharmProjects/project/venv/lib/python3.5/site-packages/django/core/handlers/base.py", line 128, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/home/PycharmProjects/project/venv/lib/python3.5/site-packages/django/core/handlers/base.py", line 126, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/PycharmProjects/project/audit/views.py", line 15, in inputview
return HttpResponseRedirect(reverse, 'auditpage')
File "/home/PycharmProjects/project/venv/lib/python3.5/site-packages/django/http/response.py", line 407, in __init__
self['Location'] = iri_to_uri(redirect_to)
File "/home/PycharmProjects/project/venv/lib/python3.5/site-packages/django/utils/encoding.py", line 151, in iri_to_uri
return quote(iri, safe="/#%[]=:;$&()+,!?*@'~")
File "/usr/lib/python3.5/urllib/parse.py", line 712, in quote
return quote_from_bytes(string, safe)
File "/usr/lib/python3.5/urllib/parse.py", line 737, in quote_from_bytes
raise TypeError("quote_from_bytes() expected bytes")
TypeError: quote_from_bytes() expected bytes
【问题讨论】:
-
Django 版本? Python版本?错误的完整追溯?注释掉的行是怎么回事?您是否尝试过将模型/表单限制在一个字段中,以找到违规字段(如果有)?
-
@Evert 我用缺失的细节更新了我的问题。我还删除了注释的代码行,因为它是我看到尝试但与我当前的配置无关的东西。
-
@Evert 我在表单的字段变量列表中分别尝试了每个字段,但它仍然给出错误。
-
嗯,它们都是文本字段,所以这是有道理的。您也可以发布回溯以确保完整性吗?
-
回溯显示问题出在您的代码中的
return HttpResponseRedirect(reverse, 'auditpage')。但是,您没有向我们展示reverse的定义。也许有你的问题?
标签: python django sqlite typeerror