AttributeError: ‘str’ Object Has No Attribute ‘x’:字符串对象没有属性x的完美解决方法 大家好,我是默语,擅长全栈开发、运维和人工智能技术。...摘要 在Python编程中,AttributeError: ‘str’ object has no attribute 'x’通常出现在试图访问字符串对象中不存在的属性时。...当你试图访问一个对象的属性,但该对象并不具备这个属性时,就会抛出这个错误。...错误的成因 这个错误通常有以下几种成因: 2.1 访问不存在的属性 ❌ Python字符串对象没有名为x的属性。当你尝试访问一个字符串对象的不存在属性时,就会抛出这个错误。...解决方案 ✅ 为了解决AttributeError: 'str' object has no attribute 'x'错误,可以采取以下几种措施: 3.1 检查属性名称 首先,确保你访问的属性在目标对象中确实存在
vue是一款轻量级的mvvm框架,追随了面向对象思想,使得实际操作变得方便,但是如果使用不当,将会面临着到处踩坑的危险,写这篇文章的目的是我遇到的这个问题在网上查了半天也没有发现解决方案...vue对象相关属性,奇怪的是当我使用jquery获取该select的val()方法获取的是最新的数据,那么问题就来了:为什么元素的值发生了变动却没有更新到vue对象相关属性?...value); }; this.on('change', this.listener); 看到了吧,只有select的change事件才会触发select元素的value值更新到vue对象相关属性...内容而采用默认第一项,所以如果用户选择select的其他项后再切回第一项就可以触发该事件完成vue对象属性变更。...我这里给出我的解决方案:在使用js代码追加内容到从select后,使用更改从select对应的vue对象属性来实现默认选择第一项。
属性 的方式修改数据 保存 通过 对象.save () 保存数据 如: from bookstore.models import Book abook = Book.objects.get(id=10)...') print(wife.name, '的老公是', wife.author.name) 反向查询 通过反向关联属性查询 反向关联属性为实例对象.引用类名(小写),如作家的反向引用为作家对象.wife...当反向引用不存在时,则会触发异常 # 通过 author.wife 关联属性 找 wife,如果没有对应的wife则触发异常 author1 = Author.objects.get(name='王老师...Publisher 查询 对应的所有的 Book 【反向】 Django会在Publisher中增加一个属性来表示对对应的Book们的查询引用 属性:book_set 等价于 objects #...】 Django 会生成一个反向属性 book_set 用于表示对对应的 book 的查询对象相关操作 author.book_set.all() author.book_set.filter()
本篇目录: 命名你的Model Model定义顺序 反向关系 Blank 和 Null 命名 Model 模型定义使用CapWords约定(没有下划线)....在 DJango 中,我们可以通过Company.objects来访问集合. 我可以通过定义models.Manager重命名objects属性....所有数据库fields Custom manager attributes class Meta def __str__() def save() def get_absolute_url() 其他自定义方法..., 该属性将返回一个 QuerySet,其中包含与此公司相关的所有员工实例 Python google = Company.objects.get(name='Google') google.employees.all...大多数开发人员都对基于字符串的字段(CharField和TextField)定义null=True, 这其实是没有必要的, 应该避免这样做,因为 Django约定使用空字符串设置空值, 而非Null.
一、查询基础QuerySet 详解Django 中通过模型类的 Manager 构建 QuerySet 来检索数据库对象,其核心特性包括:代表数据库中对象的集合可通过过滤器缩小查询范围具有惰性执行特性(...仅在需要结果时才执行 SQL)常用过滤器all():返回所有对象filter(**kwargs):返回满足条件的对象exclude(** kwargs):返回不满足条件的对象get(**kwargs):...__(self): return self.title正向查询(通过外键属性访问)b = Book.objects.get(id=2)b.author # 获取关联的Blog对象,查询数据库...().get(id=2)print(b.author) # 已预加载到缓存,使用缓存,不查询数据库反向查询(通过关联管理器)# 未定义related_name, 默认Manager名称为:反向查询a = Author.objects.get(id=5)a.book_set.all() # 获取所有关联的Book
a标签中的href,当你改完,又变成了my_index,那么一天的时间都可能在改地址,那么有没有什么方法,不再把程序写死,反向解析就是应用于此。...django2.0转换器(了解) 1.0版本的url和2.0版本的re_path分组出来的数据都是字符串类型 默认有五个转换器,感兴趣的自己可以课下去试一下 str...path('index/str:id>/',index ) django2.0自定义转换器 需要三步走战略 # 自定义转换器 class FourDigitYearConverter...('myfile')) # print(type(request.FILES.get('myfile'))) # 获取文件对象 file_obj = request.FILES.get('myfile...request的八种属性: request.GET request.POST request.method request.body 原始数据 request.path
至此我们还没有看到之前创建的模型类,需要在应用的admin.py文件中模型进行注册。 注册模型类。...(从一对多关系中“一”的一方查询“多”的一方),反向查询属性默认的名字是类名小写_set(如上面例子中的emp_set),当然也可以在创建模型时通过ForeingKey的related_name属性指定反向查询属性的名字...如果不希望执行反向查询可以将related_name属性设置为'+'或以'+'开头的字符串。...删除 >>> Dept.objects.get(pk=40).delete() (1, {'hrs.Dept': 1}) Django模型最佳实践 正确的为模型和关系字段命名。...related_name:用于获取关联对象的关联管理器对象(反向查询),如果不允许反向,该属性应该被设置为'+',或者以'+'结尾。 to_field:指定关联的字段,默认关联对象的主键字段。
) 但获取get() B对象时 获取到所有属性,public 这个属性对应的是一个对象,若要获取某个属性,需再次加点 """ # 4,数据库中已存在数据,此时修改modules,例如添加列, # 会指定让你输入默认值...("xxx") 获取列表 # 7,添加作者并关联存在的书本 # author =....creat(name=...等属性赋值) 注意没有book # author.book(manytomany...# 具体的对象没有update(),QuerySet对象才有update()方法。 ...# 加一个下一页的按钮 # 判断,如果是最后一页,就没有下一页 if self.page_num >= self.total_page: html_str_list.append...url # # { % url # 'url的别名' # xx %} # # # 4. # ORM # # 对应关系 # 类 --> 数据表 # 对象 --> 数据行 # 属性 --> 字段 # # Django
h = HeroInfo.objects.get(id=1) h.hbook 访问一对应的模型类关联对象的id语法: 多对应的模型类对象.关联类属性_id h = HeroInfo.objects.get...类型对象,类似于字典,包含get请求方式的所有参数 POST:QueryDict类型对象,类似于字典,包含post请求方式的所有参数 FILES:一个类似于字典的对象,包含所有的上传文件 COOKIES...对象 属性 content:表示返回的内容。...): rand_str += str1[random.randrange(0, len(str1))] #构造字体对象,ubuntu的字体路径为“/usr/share/fonts...1"/> 看不清,换一个 反向解析 在app01/urls.py中为include定义namespace属性 url(r'^',include('app01
在Django中具体的对应方式为: 类名对应数据库中的表名 类名对应数据库中的表名 类属性对应数据库里的字段 类实例对应数据库表里的一行数据 类实例对象的属性对应这行中的字段的值 一.数据库的连接 Django...return self.name class teacher(models.Model): name = models.CharField(max_length=20) def __str...":obj}) 3.多对多关系的字段 teacher1=teacher.objects.get(id=1) teacher2=teacher.objects.get(id=2) student1=student.objects.get...(**kwargs)得到一个结果,如果结果多于一个或没有都会报错 如果查询结果是一个结果集,即QuerySet对象,那么它还有以下方法 values(*field): 返回一个ValueQuerySet...2.QuerySet对象 查询的结果集就是一个QuerySet对象 QuerySet对象就像是一个列表,列表存储着查询出的结果,可以迭代,可以切片 Django中QuerySet对象是惰性的,即你得到这个对象的时候并没有真正的在数据库中执行
k1=v1&k2=v2),可以通过request.GET属性获取,返回QueryDict类的对象,类似于字典,但是和字典有区别,运行一键多个值(多个值获取利用request.GET.getlist)。...Flask中:request.form Django中:request.POST 前端发送的表单类型的请求体数据,可以通过request.POST属性获取,返回QueryDict对象。...) Flask和Django中request对象属性的对比 ?...这个属性是可写的,可以通过修改它来修改访问表单数据使用的编码,接下来对属性的任何访问将使用新的encoding值。 FILES:一个类似于字典的对象,包含所有的上传文件。...,下面的方式可以查找 from django.http import HttpResponse中的http可以点进去查看源代码,或者HTTPResponse中查看源代码 构造对象的时候,设置对象属性,两种方式
author.save() #save方式二: author=Author() # 对象属性添加方式...# get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。...,而不是一个queryset集合 # 反向查找 ret2=models.Publish.objects.last() # 拿到没有外键字段的表对象 print(ret2.name...(条件)----在没有外键的表中,查找与其关联表的字段信息 #反向查找之一对多: ret8=models.Publisher.objects.filter(book__title='Python....objects.update(num=F('num')+1) # Q 构建搜索条件 from django.db.models import Q #1 Q对象(django.db.models.Q
获取对象,如果获取不到会报错,所以这里使用filter 获取失败返回空对象列表 在UserProfile中筛选符合条件的用户,返回用户名 """...token生成实在allauth里面,不是django自带得token生成器 from allauth.account.utils import user_pk_to_url_str from allauth.account.views...import User from django.http import HttpRequest from django.shortcuts import render, get_object_or_404...tel = reset_password_form.clean_identity_tel() # UseProfile 中由于user相同属性的 username...", default_token_generator) # 没有生成token temp_key = token_generator.make_token
Django contenttypes 应用 简介 contenttypes 是Django内置的一个应用,可以追踪项目中所有app和model的对应关系,并记录在ContentType表中。...为了更方便查询商品的优惠券,我们还可以在商品类中通过GenericRelation字段定义反向关系。...request.method == 'GET': # ContentType表对象有model_class() 方法,取到对应model content = ContentType.objects.filter....first() models.Coupon.objects.create(name='电视优惠券', content_object=s_tv) #直接用content_object属性添加...print(prod) # 查询三星电视(id=2)的所有优惠券 res = s_tv.coupons.all() print(res) # 查询obj的所有优惠券:如果没有定义反向查询字段
注意: 第二种方式修改不能用get的原因是:update是QuerySet对象的方法,get返回的是一个model对象,它没有update方法,而filter返回的是一个QuerySet对象(filter...注意,这里因为update返回的是一个整形,所以没法用query属性;对于每次创建一个对象,想显示对应的raw sql,需要在settings加上日志记录部分: LOGGING = { 'version...# all(): 查询所有结果 # get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误...此时Django为我们提供了F和Q查询: # F 使用查询条件的值,专门取对象中某列值的操作 # from django.db.models import F # models.Tb1....objects.update(num=F('num')+1) # Q 构建搜索条件 from django.db.models import Q #1 Q对象(django.db.models.Q
如果没有给定自述名,Django 将根据字段的属性名称自动创建自述名 —— 将属性名称的下划线替换成空格。...get_absolute_url() 它告诉Django 如何计算一个对象的URL。Django 在它的管理站点中使用到这个方法,在其它任何需要计算一个对象的URL 时也将用到。...果你没有在抽象基类中为某个关联字段定义 related_name 属性,那么默认的反向名称就是子类名称加上'_set',它能否正常工作取决于你是否在子类中定义了同名字段。...但是在某些受限的情况下,子类可以从父类继承某些 Meta :如果子类没有指定 ordering属性或 get_latest_by 属性,它就会从父类中继承这些属性。...查询集始终返回请求的模型 也就是说,没有办法让DJango在查询Person对象时返回MyPerson对象。Person 对象的查询集会返回相同类型的对象。
预先将请求转变为了对象,将请求内容转变为对象属性。...)) wife = Wife.objects.create(name=’王夫人’,author_id = 1(类属性字段绑值)) 一对一查询 正向查询:从外键查对象 反向查询:从对象查外键 调用反向属性查询到关联的一方...一对多查询 核心:正向属性(authors)和反向属性(book_set) 在多表上设置外键,关联一表。...反向查询(使用反向属性): books = pub1.book_set.all() 或books = Book.objects.filter(publisher=pub1) 多对多映射...核心:正向属性(authors)和反向属性(book_set) mysql中多对多需要用三张表实现 Django中无需手动创建第三张表,Django自动完成 创建字段语法:属性 = models.ManyToManyField
之前我能只理解了如何使用 Django urls 模块中的方法生成满足业务需求的路由,但是我还真没研究过怎么收集现有路由,并进行遍历和反向解析,于是便有了此次源码阅读。...可以通过在传入的 HttpRequest 对象上设置属性 urlconf 来覆盖每个请求。详情请参见 Django 如何处理一个请求。...# 这个描述器的功能还是比较简单的大概理解就是: # 初始化时设置一个变量名称为 attr 的属性名称 # 将调用实例中名字和变量 attr 相同的属性复制给 pattern # 将调用实例的...regx 属性设置为调用实例的 _compile(pattern) 的返回值 # 看文字一大串好像很难理解 # **其实就是把传给 RoutePattern 或 RegexPattern 的匹配字符串变成一个正则对象..._get_response # 这里通过解包调用 ResolverMatch 对象的 __getitem__ 方法 callback, callback_args, callback_kwargs =
在URL控制器(project/urls.py)中,给匹配规则起个别名可以解决这个问题,这就叫做反向解析 在需要URL 的地方,对于不同层级,Django 提供不同的工具用于URL 反查: 在模板中...request request.GET 一个类似于字典的对象,包含 HTTP GET 的所有参数。...例如:"/music/bands/the_beatles/" 除此之外还有其他很多request属性 响应对象 Httpresponse() 返回给定的字符串 例如: def timer(request...类名 ------表名 类属性 ------表字段 类实例对象 ------表记录 创建表(建立模型) 举例一张Book表: id title 1 python 2 java...python get(kwargs): 返回与所给筛选条件相匹配的对象**,返回结果有且只有一个, 如果符合筛选条件的对象超过一个或者没有都会抛出错误,返回的是object get
当我们需要对数据库进行操作时,势必需要通过连接数据、调用sql语句、执行sql语句等操作,ORM将数据库中的表,字段,行与我们面向对象编程的类及其方法,属性等一一对应,即将该部分操作封装起来,程序猿不需懂得... get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。...反向查询:反向按表名小写_set.all() 4******基于对象的查询,多次查询(子查询) 打印Django查询数据的SQL语句 将如下代码添加到...person_set属性。...person_set属性进行反向查询。