[英]AttributeError: 'NoneType' object has no attribute 'strip'
[英]'NoneType' object has no attribute 'strip' - Slugify
我的模型在 slugify 线上有问题
from django.db import models
from django.contrib.auth.models import User
from django.template.defaultfilters import slugify
# Create your models here.
class Pages(models.Model):
title = models.CharField(max_length=255)
slug = models.SlugField(blank=True)
content = models.TextField(blank=True)
publish_at = models.DateTimeField(auto_now_add=True)
update_at = models.DateTimeField(auto_now=True)
order = models.IntegerField(default=0)
type_content = models.CharField(max_length=255)
user = models.ForeignKey(User)
status =models.IntegerField(default=1)
def __str__(self):
return self.title
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.title)
#self.user=self.request.user
super(Pages, self).save( *args, **kwargs)
我试着把代码 self.slug = slugify("test of slug") 和问题仍然存在,但是当他说保持信息没有问题时
这是我的错误:
环境:
请求方式:POST 请求地址: http://xxx.xx.xx.xx:8000/admin/pages/pages/add/
Django 版本:1.7.1 Python 版本:3.4.2 已安装的应用程序:('django.contrib.admin'、'django.contrib.auth'、'django.contrib.contenttypes'、'django.contrib.sessions'、'django .contrib.messages', 'django.contrib.staticfiles', 'seo', 'pages', 'site_options', 'news', 'tags', 'category') 安装的中间件: ('django.contrib.sessions.middleware .SessionMiddleware'、'django.middleware.common.CommonMiddleware'、'django.middleware.csrf.CsrfViewMiddleware'、'django.contrib.auth.middleware.AuthenticationMiddleware'、'django.contrib.auth.middleware.Session'AuthenticationMiddleware' .contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware')
回溯:get_response 111 中的文件“C:\\cms-rock\\vrockw\\lib\\site-packages\\django\\core\\handlers\\base.py”。 response = wrapper_callback(request, *callback_args, **callback_kwargs) 文件“C: \\cms-rock\\vrockw\\lib\\site-packages\\django\\contrib\\admin\\options.py”在包装器 584 中。返回 self.admin_site.admin_view(view)(*args, **kwargs) 文件“C:\\cms -rock\\vrockw\\lib\\site-packages\\django\\utils\\decorators.py" in _wrapped_view 105. response = view_func(request, *args, **kwargs) File "C:\\cms-rock\\vrockw\\lib\\site -packages\\django\\views\\decorators\\cache.py" in _wrapped_view_func 52. response = view_func(request, *args, **kwargs) File "C:\\cms-rock\\vrockw\\lib\\site-packages\\django\\contrib \\admin\\sites.py" 在内部 204. return view(request, *args, **kwargs) File "C:\\cms-rock\\vrockw\\lib\\site-packages\\django\\contrib\\admin\\options.py"在 add_view 1454. return self.changeform_view(request, None, form_url, extra_context) File "C:\\cms-rock\\vrockw\\lib\\site-packages\\django\\utils\\decorators.py" in _wrapper 29. return bo und_func(*args, **kwargs) 文件“C:\\cms-rock\\vrockw\\lib\\site-packages\\django\\utils\\decorators.py” in _wrapped_view 105. response = view_func(request, *args, **kwargs ) 文件“C:\\cms-rock\\vrockw\\lib\\site-packages\\django\\utils\\decorators.py”在bound_func 25.返回func。 get (self, type(self))(*args2, **kwargs2) File "C:\\cms-rock\\vrockw\\lib\\site-packages\\django\\db\\transaction.py" in inner 394. return func(* args, **kwargs) 文件 "C:\\cms-rock\\vrockw\\lib\\site-packages\\django\\contrib\\admin\\options.py" in changeform_view 1405. self.save_model(request, new_object, form, not add) save_model 中的文件“C:\\cms-rock\\cms\\pages\\admin.py” 45. obj.save() 文件“C:\\cms-rock\\cms\\pages\\models.py” 37. super(Pages , self).save( *args, **kwargs) 文件 "C:\\cms-rock\\vrockw\\lib\\site-packages\\django\\db\\models\\base.py" in save 591. force_update=force_update, update_fields= update_fields) 文件 "C:\\cms-rock\\vrockw\\lib\\site-packages\\django\\db\\models\\base.py" in save_base 619. updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields ) 文件 "C:\\cms-rock\\vrockw\\lib\\site-packages\\django\\db\\models\\base.py" in _save_table 700. result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)文件“C:\\cms-rock\\vrockw\\lib\\site-packages\\django\\db\\mode ls\\base.py" in _do_insert 733. using=using, raw=raw) 文件 "C:\\cms-rock\\vrockw\\lib\\site-packages\\django\\db\\models\\manager.py" in manager_method 92. return getattr(self.get_queryset(), name)(*args, **kwargs) _insert 921 中的文件“C:\\cms-rock\\vrockw\\lib\\site-packages\\django\\db\\models\\query.py”。返回query.get_compiler(using=using).execute_sql(return_id) 文件“C:\\cms-rock\\vrockw\\lib\\site-packages\\django\\db\\models\\sql\\compiler.py”在execute_sql 920. cursor.execute( sql, params) 文件 "C:\\cms-rock\\vrockw\\lib\\site-packages\\django\\db\\backends\\utils.py" in execute 85. sql = self.db.ops.last_executed_query(self.cursor, sql , params) 文件 "C:\\cms-rock\\vrockw\\lib\\site-packages\\mysql\\connector\\django\\base.py" in last_executed_query 371. return cursor.statement File "C:\\cms-rock\\vrockw\\lib \\site-packages\\mysql\\connector\\django\\base.py" in getattr 147. return getattr(self.cursor, attr) File "C:\\cms-rock\\vrockw\\lib\\site-packages\\mysql\\connector\\cursor .py”在语句 858 中。返回 self._executed.strip()
异常类型:/admin/pages/pages/add/ 处的 AttributeError 异常值:'NoneType' 对象没有属性 'strip'
尝试使用slugify功能从django.utils.text而不是django.template.defaultfilters
。 来自 django.template.defaultfilters 的 Slugify 是模板过滤器,它应该在模板中使用。
好吧,我遇到了同样的问题。 这就是我固定的方式。
slugify(self.title).__str__()
Slugify 返回一个“SafeString”并且它没有任何“strip()”函数。 所以我得到一个“str”并且它有效。
此错误意味着创建的模型的title
属性没有值,您需要确保您的 Page 实例具有 required 属性,然后再对其标题进行 slugify。
以下代码是一个很好的解决方法,但您仍然需要知道为什么您的模型在保存时没有标题。
...
class Pages(models.Model):
...
def save(self, *args, **kwargs):
if self.title and not self.slug:
self.slug = slugify(self.title)
...
对您来说,最佳解决方案是使用Django Autoslug库,这将使您免于为 slug 字段设置值的所有麻烦。
一探究竟:
from autoslug import AutoSlugField
class Pages(Model):
title = CharField(max_length=255)
slug = AutoSlugField(populate_from='title')
您可以使用 django 信号来解决这个问题。 尝试在 models.py 的末尾添加以下代码
from django.db.models.signals import pre_save
from django.dispatch import receiver
@receiver(pre_save, sender=Pages)
def pre_save_pages(sender, instance, *args, **kwargs):
if not instance.u_id:
instance.slug = slugify(instance.title)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.