Django版本:3.0.8-Python版本:3.7.8
我最近在Django网站上发现了一个错误。当用户想要创建帐户时,会返回以下错误: 序列项0:应为str实例,未找到NoneType
操作:
第一步出现错误,创建帐户(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
models.py
class Profile(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)
full_address = models.CharField(null=True,blank=True,max_length=128)
latitude = models.DecimalField(max_digits=9, decimal_places=6, blank=True, default='0')
longitude = models.DecimalField(max_digits=9, decimal_places=6, blank=True, default='0')
slug = models.SlugField(editable=False)
def save(self, *args,**kwargs):
self.slug = slugify(self.user.username)
address = " ".join([self.full_address])
result = geocoder.geocode(address)
if result and len(result):
self.longitude = result[0]['geometry']['lng']
self.latitude = result[0]['geometry']['lat']
super(Profile, self).save(*args, **kwargs)
让我简化您看到的错误:
在您的情况下,此行会出现相同的异常:
这意味着
self.full_address
就是None
同时,我认为您不需要
join
,因为您尝试连接单个字符串。你对这一行的期望是什么因此,模型的代码如下所示:
相关问题 更多 >
编程相关推荐