python - Django AttributeError 'NoneType' 没有属性 'strip'
问题描述
我是 Django 初学者,我不知道为什么每次尝试提交表单时都会在 /id_finder/forms/ 'NoneType' 对象没有属性 'strip' 处出现此 AttributeError。有人可以看看我下面的代码,也许我做的不对。
表格.py
class UserForm(forms.Form):
first_name = forms.CharField(max_length = 15,required = True)
last_name = forms.CharField(max_length = 15,required = True)
email = forms.EmailField(max_length = 50,required = True)
phone_number = forms.CharField(max_length = 14,required = True)
password = forms.CharField(max_length = 30,widget = forms.PasswordInput(),required = True)
region = forms.ModelChoiceField(queryset=Region.objects.all(),empty_label = None,required = True)
district = forms.ModelChoiceField(queryset=District.objects.all(),empty_label = None,required = True)
模型.py
class User(models.Model):
FirstName = models.CharField(max_length = 15)
LastName = models.CharField(max_length = 15)
PhoneNumber = models.CharField(max_length = 14)
Email = models.EmailField(max_length = 50)
Password = models.CharField(max_length = 30)
Date = models.DateTimeField(auto_now_add = True)
Region = models.OneToOneField('Region', on_delete = models.PROTECT)
District = models.OneToOneField('District', on_delete = models.PROTECT)
def __str__(self):
return "{0} {1}".format(self.FirstName,self.LastName)
class Region(models.Model):
RegionName = models.CharField(max_length = 20)
def __str__(self):
return self.RegionName
class District(models.Model):
DistrictName = models.CharField(max_length = 30)
Region = models.ForeignKey(Region, on_delete = models.PROTECT)
def __str__(self):
return self.DistrictName
视图.py
def form(request):
if request.method == 'POST':
form = UserForm(request.POST)
if form.is_valid():
obj = User() # create a new model object
#process form data
obj.first_name = form.cleaned_data['first_name']
obj.last_name = form.cleaned_data['last_name']
obj.email = form.cleaned_data['email']
obj.phone_number = form.cleaned_data['phone_number']
obj.password = form.cleaned_data['password']
obj.region = form.cleaned_data['region']
obj.district = form.cleaned_data['district']
#save the data
obj.save()
return HttpResponseRedirect("Information saved successfully")
else:
form = UserForm()
return render(request,'id_finder/form.html',{'form':form})
追溯:
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/mysql/connector/connection_cext.py" in cmd_query
395. raw_as_string=raw_as_string)
During handling of the above exception (Column 'Region_id' cannot be null), another exception occurred:
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/mysql/connector/django/base.py" in _execute_wrapper
168. return method(query, args)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/mysql/connector/cursor_cext.py" in execute
266. raw_as_string=self._raw_as_string)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/mysql/connector/connection_cext.py" in cmd_query
398. sqlstate=exc.sqlstate)
During handling of the above exception (1048 (23000): Column 'Region_id' cannot be null), another exception occurred:
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/db/backends/utils.py" in execute
99. return super().execute(sql, params)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/db/backends/utils.py" in execute
67. return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/db/backends/utils.py" in _execute_with_wrappers
76. return executor(sql, params, many, context)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/db/backends/utils.py" in _execute
84. return self.cursor.execute(sql, params)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/mysql/connector/django/base.py" in execute
218. return self._execute_wrapper(self.cursor.execute, query, new_args)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/mysql/connector/django/base.py" in _execute_wrapper
174. utils.IntegrityError(err.msg), sys.exc_info()[2])
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/utils/six.py" in reraise
683. raise value.with_traceback(tb)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/mysql/connector/django/base.py" in _execute_wrapper
168. return method(query, args)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/mysql/connector/cursor_cext.py" in execute
266. raw_as_string=self._raw_as_string)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/mysql/connector/connection_cext.py" in cmd_query
398. sqlstate=exc.sqlstate)
During handling of the above exception (Column 'Region_id' cannot be null), another exception occurred:
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/mysql/connector/cursor_cext.py" in statement
606. return self._executed.strip().decode('utf8')
During handling of the above exception ('NoneType' object has no attribute 'strip'), another exception occurred:
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/core/handlers/exception.py" in inner
34. response = get_response(request)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response
115. response = self.process_exception_by_middleware(e, request)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response
113. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/mohameddiaby/Desktop/Project/Lost_and_Found/id_finder/views.py" in form
28. obj.save()
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/db/models/base.py" in save
741. force_update=force_update, update_fields=update_fields)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/db/models/base.py" in save_base
779. force_update, using, update_fields,
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/db/models/base.py" in _save_table
870. result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/db/models/base.py" in _do_insert
908. using=using, raw=raw)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/db/models/manager.py" in manager_method
82. return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/db/models/query.py" in _insert
1186. return query.get_compiler(using=using).execute_sql(return_id)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/db/models/sql/compiler.py" in execute_sql
1335. cursor.execute(sql, params)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/db/backends/utils.py" in execute
103. sql = self.db.ops.last_executed_query(self.cursor, sql, params)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/mysql/connector/django/operations.py" in last_executed_query
127. return force_text(cursor.statement, errors='replace')
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/mysql/connector/django/base.py" in __getattr__
230. return getattr(self.cursor, attr)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/mysql/connector/cursor_cext.py" in statement
608. return self._executed.strip()
编辑:我注意到的另一件事是查询中有空值将信息从表单发送到数据库。我不明白为什么
追溯:
buffered
False
query
(b'INSERT INTO `id_finder_user` (`FirstName`, `LastName`, `PhoneNumber`, `Email'
b"`, `Password`, `Date`, `Region_id`, `District_id`) VALUES ('', '', '', '', '"
b"', '2019-07-07 11:56:25.206852', NULL, NULL)")
raw
False
raw_as_string
False
self
<mysql.connector.connection_cext.CMySQLConnection object at 0x10cb61c18>
解决方案
推荐阅读
- kotlin - 如何在 kotlin 中使用 JasonElement
- python - 我无法过滤从我的网址获取数据以保存到
- python - Django - 如何根据输入的输入数字或单击添加更多按钮添加多个表单
- javascript - 我可以使用另一个应用程序的关键字参数将两个不同应用程序的 URL 连接在一起吗?
- r - 滑块包和分组数据
- android - 既然不推荐使用 setUserProperties,如何将要记录的用户的不同属性关联到 Facebook 应用程序事件 SDK?
- java - 给定输入值 15 和 24 时,方法 GCD 不打印 3
- html - 无法通过单击名称访问学区页面
- pytest - Playwright-pytest - 测试的持久上下文 - 如何为每个测试创建一个新选项卡
- css - 安装包时如何解决 npm 错误?