首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python - 面向对象编程 - 反射 hasattr、getattr、getattr、delattr

什么是反射 反射概念是由 Smith 1982 年首次提出,主要是指程序可以访问、检测和修改它本身状态或行为一种能力(自省) Python 面向对象反射 通过字符串形式操作对象属性 Python...This is done by calling getattr(obj, name) and catching AttributeError. """ pass 返回对象是否具有具有给定名称属性...delattr(x, 'y') is equivalent to ``del x.y'' """ pass 从指定对象删除指定属性 等价写法 del x.y delattr(x,...hasattr(blog, "name")) # 实例对象-实例属性 print(hasattr(blog, "sum")) # 实例对象-类属性 print(hasattr...__dict__) # 输出结果 {'name': '小菠萝'} 反射本模块成员 除了可以检测类中有没有某个属性、方法,还可以用来检测某个模块下有没有方法、类、变量 sums = 0 def

44330

​第 07 篇:创作后台开启,请开始你表演!

: •admin 后台本身页面元素是已经汉化了,但是我们自己 blog 应用,以及 Post、Category、Tag 页面显示却是英文,以及发布文章时候,表单各字段 label 也是英文...要修改 app admin 后台显示名字,添加 verbose_name 属性。...然后就是修改 post 表单 label,label 由定义 model Field 名转换二来,所以 Field 修改。...此前我们 blog/admin.py 定义了一个 PostAdmin 来配置 Post admin 后台一些展现形式。list_display 属性控制 Post 列表页展示字段。...此外还有一个 fields 属性,则用来控制表单展现字段,正好符合我们需求: class PostAdmin(admin.ModelAdmin): list_display = ['title

1.1K20
您找到你想要的搜索结果了吗?
是的
没有找到

django入门:Admin管理系统及表单(干货)

from blog.models import Post, Category, Tag # 应用目录下 admin.py 文件,对创建模型进行注册,可以一起用列表注册,也可以分开注册 admin.site.register...admin 显示内容,可以通过如下进行定制 @admin.register(Post) class PostAdmin(admin.ModelAdmin) list_display = ['title...= ['title', 'author'] # 排除一些不想被编辑 fields, 没有列表不可被编辑 fields = ('title', 'author')...提交表单错误 不存在对应模型(POST 方式) 1. forms.py 创建表单 # 假设有个信息反馈表单 class ContractForm(forms.Form): subject...提交反馈错误 类似搜索表单(GET) 1.创建表单视图 def search(request): # 获取到用户提交搜索关键词,字典键值同模版 name 属性值 q = request.GET.get

2.8K20

【Python之旅】第四篇(二):Pyt

Python程序执行过程,难免会出现异常情况,如果做是跟用户交互程序,当用户输入不可接受内容时,可预见范围内,我们当然是希望可以给用户一些提示,而不是原来Python内置异常那些提示语句...试图访问一个对象没有属性,比如myInst.foo,但是myInst没有属性foo ValueError 传入一个调用者不期望值,即使值类型是正确 TypeError 传入对象类型与要求不符合...AttributeError:试图访问一个对象没有属性,比如myInst.foo,但是myInst没有属性foo >>> class myClass(): ...     ...上面的代码,显然list和dict都是有错误,但执行程序时,只返回list异常信息,这说明,try语句执行时是顺序执行,并非是循环执行,即捕捉到list异常后,并不会继续执行下一个语句,只有等异常解除时才会继续往下执行...当然except后面可以不加任何异常类型,此时,将会捕捉任何前面没有捕捉到异常,这适合于一些未可预见异常情况,如上面的程序,list异常和dict异常是我们可预料,但假如这时加入一个不可预料异常时

70640

01-Springboot博客项目

(即action路径),而非模板映射路径; 由于本节控制器没有专用于登陆成功控制器,因此此处没有使用转发,而是通过模板映射。...前后端数据交互 (1)控制器参数对应表单提交参数即可自动实现注入;若为model,也能实现自动注入 ①使用总结:控制器形参类型,表单中直接提交形参类型属性即可。...1)可以model属性上增加@JsonAlias实现别名 2)model属性上增加@JsonProperty实现唯一标准名(与前端提交相比较) ⑤如果前端传递不是json,又需要将其封装为model...更新(添加)标签请求 post /tags{id} admin/tags 页面获得id,通过id进行更新 * 5....copy 给数据库查到tmp,则blognull会覆盖tmp原来有数据字段 //因此,要忽略掉blog属性值为空字段 BeanUtils.copyProperties

1.8K20

Django搭建blog网站(一)

我们前面视图函数 index 里给模板传了一个 post_list 变量,它里面包含着从数据库取出文章列表数据。...你可能不太理解模板 post 和 post_list 是什么。...post_list 是一个 QuerySet(类似于一个列表数据结构),其中每一项都是之前定义 blog\models.py Post实例,且每个实例分别对应着数据库每篇文章记录。...因此我们循环遍历 post_list ,每一次遍历结果都保存在 post变量里。所以我们使用模板变量来显示 post 属性值。...例如这里 {{ post.pk }}(pk 是 primary key 缩写,即 post 对应于数据库记录 id 值,该属性尽管我们没有显示定义,但是 Django 会自动为我们添加)。

5.6K91

django入门:视图及模版

urlpatterns = [ url(r'^admin/', admin.site.urls), # include 作用: django 匹配 url 时候匹配完 blog/...文件夹中找到相应模版, TEMPLATES DIRS 列表中加入如下代码 'DIRS': [os.path.join(BASE_DIR, 'templates')], 2. templates...文件夹下再创建放应用模版文件夹 例如 blog ,然后 blog 创建 index.html 作为 index 视图模版 <!...reversed%} 执行循环之前通常先检测列表大小,因此 for 标签支持一个可选 {% empty %} 分句 每个 {% for %} 循环里有一个称为 forloop 模板变量,这个变量存在一些表示循环进度信息属性...{% endfor%} 静态文件处理 应用目录下创建 static 文件夹,可以将常用 css 文件,js 文件等放入该文件夹 需要引用静态文件模版做如下处理

1K20

编写 Django 应用单元测试

删除 blog\tests.py 文件,然后 blog 应用下创建一个 tests 包,再创建各个单元测试模块: blog\ tests\ __init__.py test_smoke.py...(self.post.modified_time > old_post_modified_time) 这个 refresh_from_db 方法将刷新对象 self.post 值为数据库最新值,...渲染模板为 index.html 访问分类有文章,则响应应该包含系列关键模板变量,post_list、is_paginated、page_obj,post_list 文章数量为1,因为我们测试数据这个分类下只有一篇文章..., self.cate1) reverse('admin:blog_post_add') 获取 admin 管理添加博客文章 URL,django admin 添加文章视图函数名为 admin:blog_post_add...我们调用了模板引擎底层 API 来渲染模板,视图函数会渲染模板,返回响应,但是我们没有看到这个过程,是因为 django 帮我们背后调用了这个过程。

74130

第 14 篇:交流桥梁“评论功能”—— HelloDjango 系列教程

注意这里注册是 CommentsConfig 类, 博客从“裸奔”到“有皮肤”[1] 中曾经讲过如何对应用做一些初始化配置,例如让 blog 应用在 django admin 后台显示中文名字。...注意到表单定义没有定义 name、email、url 等属性,那它们是哪里来呢?...post = get_object_or_404(Post, pk=post_pk) # django 将用户提交数据封装在 request.POST ,这是一个类字典对象。...紧接着传入消息内容,最后 extra_tags 给这条消息打上额外标签,标签值可以展示消息时使用,比如这里我们会把这个值用在模板 HTML 标签 class 属性,增加样式。...但既然我们已经有了一个 Post 模型实例 post(它对应Post 在数据库一条记录),那么获取和 post 关联评论列表有一个简单方法,即调用它 xxx_set 属性来获取一个类似于

1.6K20

django2实战4.创建文章列表页和详情页url适配自定义模型管理器view写业务逻辑新建模板文件添加分页功能

= 'blog' urlpatterns = [ path('', views.post_list, name='post_list'), # 列表页url规则 path('<int...如,博客前台要展示数据肯定是已发布,如果每次取已发布数据都要通过过滤条件获取,显得很繁琐。可以通过自定义管理器,将已发布文章封装成文章类一个属性。...()就能获取所有已发布文章 view写业务逻辑 mysite/blog/views.py from django.shortcuts import render, get_object_or_404.../post/detail.html', {'post': post}) view中指定了list和detailhtml文件路径,我们需要在相应位置创建html文件...{% endfor %} {% endblock %} list.html继承了base.html, 并将内容注入到base.htmlid为contentdiv detail.html {% extends

1.4K30

Django搭建blog网站(二)

recent_post_list 模板变量,之后就可以通过 for 循环来循环显示文章列表数据了,这和我们写首页视图时是一样。...由于日期列表元素为 Python  date 对象,因此可以通过其 year 和 month 属性分别获取年和月信息,{{ date.year }} 年 {{ date.month...注意这里 created_time 是 Python  date 对象,其有一个 year 和 month 属性,我们 页面侧边栏:使用自定义模板标签 使用过这个属性。...if request.method == 'POST': # 用户提交数据存在 request.POST ,这是一个类字典对象。...但既然我们已经有了一个 Post 模型实例 post(它对应是 Post 在数据库一条记录),那么获取和 post 关联评论列表有一个简单方法,即调用它 xxx_set 属性来获取一个类似于

4.5K100

springboot+vue练手级项目,真实在线博客系统

,与数据库属性值基本保持一致,实现set和get方法。...首页-最热文章 ms_article表view_counts表示浏览数量,越多表示越火热 4.2.1 接口说明 接口url:/articles/hot 请求方式:POST 请求参数: 参数名称...完成保存用户登录信息功能 使用ThreadLocal替代Session好处: 可以同一线程很方便获取用户信息,不需要频繁传递session对象。...具体实现流程: 登录业务代码,当用户登录成功时,生成一个登录凭证存储到redis, 将凭证字符串保存在cookie返回给客户端。...如果想取消强引用和某个对象之间关联,可以显式地将引用赋值为null,这样可以使JVM合适时间就会回收该对象。 弱引用,JVM进行垃圾回收时,无论内存是否充足,都会回收被弱引用关联对象

1.3K10
领券