【问题标题】:Django/python model form type errorDjango/python 模型表单类型错误
【发布时间】: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


【解决方案1】:

正如 Evert 在 cmets 中指出的那样,我不需要 reverse 函数,因为它将它作为参数调用。删除这行代码使我的表单可以正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-24
    • 2017-08-20
    • 2015-03-15
    • 1970-01-01
    • 2017-06-14
    • 2016-10-31
    相关资源
    最近更新 更多