Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 注册-序列项0:应为str实例,未找到非类型_Python_Python 3.x_Django_Django Models_Django Orm - Fatal编程技术网

Python 注册-序列项0:应为str实例,未找到非类型

Python 注册-序列项0:应为str实例,未找到非类型,python,python-3.x,django,django-models,django-orm,Python,Python 3.x,Django,Django Models,Django Orm,Django版本:3.0.8-Python版本:3.7.8 我最近在Django网站上发现了一个错误。当用户想要创建帐户时,会返回以下错误: 序列项0:应为str实例,未找到NoneType 操作: 帐户创建(检查数据库中是否不存在用户名) 创建用户活动=False 发送确认帐户创建的电子邮件 第一步出现错误,创建帐户(Active=False),不发送电子邮件,并显示错误 Traceback (most recent call last): File "/home/eodj8

Django版本:3.0.8-Python版本:3.7.8

我最近在Django网站上发现了一个错误。当用户想要创建帐户时,会返回以下错误: 序列项0:应为str实例,未找到NoneType

操作:

  • 帐户创建(检查数据库中是否不存在用户名)
  • 创建用户活动=False
  • 发送确认帐户创建的电子邮件
第一步出现错误,创建帐户(Active=False),不发送电子邮件,并显示错误

Traceback (most recent call last):
  File "/home/eodj89/virtualenv/DjangoPro/3.7/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/home/eodj89/virtualenv/DjangoPro/3.7/lib/python3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/home/eodj89/virtualenv/DjangoPro/3.7/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/eodj89/DjangoPro/user/views.py", line 45, in signup
    user.save()
  File "/home/eodj89/virtualenv/DjangoPro/3.7/lib/python3.7/site-packages/django/contrib/auth/base_user.py", line 66, in save
    super().save(*args, **kwargs)
  File "/home/eodj89/virtualenv/DjangoPro/3.7/lib/python3.7/site-packages/django/db/models/base.py", line 746, in save
    force_update=force_update, update_fields=update_fields)
  File "/home/eodj89/virtualenv/DjangoPro/3.7/lib/python3.7/site-packages/django/db/models/base.py", line 795, in save_base
    update_fields=update_fields, raw=raw, using=using,
  File "/home/eodj89/virtualenv/DjangoPro/3.7/lib/python3.7/site-packages/django/dispatch/dispatcher.py", line 175, in send
    for receiver in self._live_receivers(sender)
  File "/home/eodj89/virtualenv/DjangoPro/3.7/lib/python3.7/site-packages/django/dispatch/dispatcher.py", line 175, in <listcomp>
    for receiver in self._live_receivers(sender)
  File "/home/eodj89/DjangoPro/user/models.py", line 479, in create_user_profile
    UserProfile.objects.create(user=instance)
  File "/home/eodj89/virtualenv/DjangoPro/3.7/lib/python3.7/site-packages/django/db/models/manager.py", line 82, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/home/eodj89/virtualenv/DjangoPro/3.7/lib/python3.7/site-packages/django/db/models/query.py", line 433, in create
    obj.save(force_insert=True, using=self.db)
  File "/home/eodj89/DjangoPro/user/models.py", line 346, in save
    address = " ".join([self.full_address])

Exception Type: TypeError at /account/register/
Exception Value: sequence item 0: expected str instance, NoneType found

让我简化您看到的错误:

In [1]: ''.join([None])
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-1-29122f69a077> in <module>
----> 1 ''.join([None])

TypeError: sequence item 0: expected str instance, NoneType found
这意味着
self.full\u address
None

同时,我认为您不需要在那里加入
join
,因为您尝试加入单个字符串。你对这一行的期望是什么

因此,模型的代码如下所示:

类配置文件(models.Model):
user=models.OneToOneField(settings.AUTH\u user\u MODEL,on\u delete=models.CASCADE)
完整地址=models.CharField(null=True,blank=True,最大长度=128)
纬度=models.DecimalField(最大位数=9,小数位数=6,空白=True,默认为0)
经度=models.DecimalField(最大位数=9,小数位数=6,空格=True,默认为0)
slug=models.SlugField(可编辑=False)
def保存(自身、*args、**kwargs):
self.slug=slugify(self.user.username)
如果self.full\u地址:
地理编码=geocoder.geocode(self.full\u地址)
如果地理编码:
self.longitude=geo_代码[0]['geometry']['lng']
self.latitude=geo_代码[0]['geometry']['lat']
超级(配置文件,自我)。保存(*args,**kwargs)

如果没有完整地址怎么办谢谢您的及时回复。你有什么建议我避免这个错误,什么都不要犯?因为正如你所知,一旦用户处于活动状态,就会使用该配置文件。我很乐意向你展示多种解决问题的方法。但我看不出有什么问题,我想你根本不需要那种
”。加入(…)
——因为没有什么可以加入的!:)所以你可以去掉那一行。你的要求也有问题。是否希望所有用户都必须填写“完整地址”字段?或者你想给他们一个在注册过程中跳过该字段的机会?好的,我将删除它:)我认为如果它不是强制性的话会更好。另外,请记住,根据完整地址,你有更多的代码。如果没有地址,您也无法生成地理数据。因此,您应该添加一个类似于
if self.full_address:…
的检查,然后继续进行这些地理计算。
In [1]: ''.join([None])
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-1-29122f69a077> in <module>
----> 1 ''.join([None])

TypeError: sequence item 0: expected str instance, NoneType found