def

Django

醉酒当歌 提交于 2020-12-14 07:16:21
一、原生form https://www.cnblogs.com/yuanchenqi/articles/7614921.html 案例: 步骤: 1.models.py ... makemigrations migrate from django.db import models # Create your models here. class Book(models.Model): title = models.CharField(max_length=32 ) price = models.DecimalField(max_digits=8,decimal_places=2) # 999999.99 date = models.DateField() publish = models.ForeignKey( " Publish " ,on_delete= models.CASCADE) authors = models.ManyToManyField( " Author " ) def __str__ (self): return self.title class Publish(models.Model): name = models.CharField(max_length=32 ) def __str__ (self): return self.name class

Django之ModelForm

痴心易碎 提交于 2020-12-14 06:25:22
简介 Model + Form ==> ModelForm。model和form的结合体,所以有以下功能: 验证 数据库操作 Form回顾 models.py class UserType(models.Model): caption = models.CharField(max_length=32) class UserInfo(models.Model): username = models.CharField(max_length=32) email = models.EmailField() user_type = models.ForeignKey(to='UserType',to_field='id') forms.py from django import forms from django.forms import fields class UserInfoForm(forms.Form): # username = models.CharField(max_length=32) <-- models username = fields.CharField(max_length=32) # email = models.EmailField() <-- models email = fields.EmailField() # user_type = models

Python微信操控(itchat)

耗尽温柔 提交于 2020-12-14 06:07:21
itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单。 开源地址 https://github.com/littlecodersh/ItChat 文档: https://itchat.readthedocs.io/zh/latest/ 安装: pip3 install itchat 登入与登出 登入并向文件助手发送一句话,登入时会经过扫码操作,类似于电脑微信登入 1 import itchat 2 # 登入并保存登入状态,实现第一次运行时扫码,一定时间内再次运行就不用扫码了,手机微信上将显示:网页微信已登入..... 3 itchat.auto_login(hotReload= True) 4 # 发送文本数据到文件助手 5 itchat.send( " 东小东你好123 " ,toUserName= " filehelper " ) 登出: itchat.logout() 注册登入登出的回调方法 1 def ldong(): 2 print ( ' 微信登入 ' ) 3 def edong(): 4 print ( ' 微信登出 ' ) 5 # 登入 6 itchat.auto_login(hotReload=True,loginCallback=ldong, exitCallback=edong) 命令行二维码

python3.x 九九乘法表

不想你离开。 提交于 2020-12-14 06:00:25
def multiplication_table(): for i in range(1,10): for j in range(1,i+1): if j==i: print('{0:}*{1:}={2:}'.format(j,i,i*j),end='\n') else: print('{0:}*{1:}={2:}'.format(j, i, i * j), end=' ') if __name__ == '__main__':   multiplication_table() 或者 for i in range(1,10): for j in range(1,i+1): print('%s*%s=%s' %(i,j,i*j),end = ' ') print() 注意最后的print(),那个print()让结果成行输出 来源: oschina 链接: https://my.oschina.net/u/4284522/blog/3756898

python实现·十大排序算法之冒泡排序(Bubble Sort)

一笑奈何 提交于 2020-12-14 05:14:19
简介 冒泡排序( Bubble Sort )是经典排序算法之一,属于交换排序的一种,基本的排序思路是:从头开始两两元素进行比较,大的元素就往上冒,这样遍历一轮后,最大的元素就会直接筛选出来。然后再重复上述操作,即可完成第二大元素的冒泡。以此类推,直到所有的元素排序完成。 算法实现步骤 比较相邻的元素,如果第一个比第二个大,就交换它们两个(确定排序规则:从小到大或从大到小); 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对; 针对所有的元素重复以上的步骤,除了最后一个; 重复步骤1~3,直到没有任何一对元素需要比较,那么排序完成。 Python 代码实现 # bubble_sort 代码实现 from typing import List # 冒泡排序 def bubble_sort(arr: List[int]): """ 冒泡排序(Bubble sort) :param arr: 待排序的List,此处限制了排序类型为int :return: 冒泡排序是就地排序(in-place) """ length = len(arr) if length <= 1: return for i in range(length): is_made_swap = False ## 设置标志位,若本身已经有序,则直接break for j in range(length - i - 1

numpy学习(三)

拥有回忆 提交于 2020-12-14 04:51:55
练习篇(Part 3) 31. 略 32. Is the following expressions true? (★☆☆) 1 np.sqrt(-1) == np.emath.sqrt(-1) 1 print (np.sqrt(-1) == np.emath.sqrt(-1)) 运行结果:False 33. How to get the dates of yesterday, today and tomorrow? (★☆☆) 1 yesterday = np.datetime64( ' today ' , ' D ' ) - np.timedelta64(1, ' D ' ) 2 today = np.datetime64( ' today ' , ' D ' ) 3 tomorrow = np.datetime64( ' today ' , ' D ' ) + np.timedelta64(1, ' D ' ) 4 print ( " yesterday: " + str(yesterday)) 5 print ( " today: " + str(today)) 6 print ( " tomorrow: " +str(tomorrow)) 运行结果: yesterday:2019-09-24 today:2019-09-25 tomorrow:2019-09-26 34.

wxpython笔记:Wxpython pannel切换

瘦欲@ 提交于 2020-12-14 03:57:55
演示效果 实现panel切换思路 1.创建所有在某个区域需要切换面板对象,设置为None self.panel_Celan1 = None self.panel_Celan2 = None self.panel_Celan3 = None self.panel_Celan1_1 =None 2.我们要实现切换,就是删除在这个位置的其他panel,然后创建显示你想要显示的panel。 我们以侧栏第二个按钮为例: 我们想要显示self.panel_Celan2,而在这个位置可能存在self.panel_Celan1,self.panel_Celan3,self.panel_Celan1_1, 对于self.panel_Celan1,self.panel_Celan3,self.panel_Celan1_1这些panel,全部需要判断,如果存在,则删除,如果不存在,我们就不需要操作 而我们需要切换显示的panel只需要在不存在的时候创建即可,因为你一直点击同一个按钮,已经创建panel,不需要再次创建panel。 if event.GetEventObject()== self._caidan2: # 如果需要显示的地方存在其他面板,删除 if self.panel_Celan1: self.panel_Celan1.Destroy() if self.panel_Celan1_1:

浅尝装饰器--property装饰器

99封情书 提交于 2020-12-14 01:52:59
【写在前面】   本帖归属于装饰器单元的学习,可以点击关键词‘装饰器’查看其他博文讲解 【正文部分】   property属性: 将类方法用类属性的形式进行调用 class Good: def __init__ (self,name): self. __name = name @property def name(self): # 只能由self参数 return self. __name # 必须要有返回值 @property def setname(self): self. __name = ' Liming ' good = Good( ' Lihua ' ) # print(good.__name) # 报错,无法访问私有属性 print (good.name) print (good.setname) print (good.name) # 输出结果 Lihua None Liming 结论: 1、property属性的创建过程   构造装饰器:@property   装饰过程: property(类方法) 2、property属性的应用:   可以简化流程,对私有属性的获取和设置进行简化。   (1)测试代码表名类的外部是不能对类的私有属性进行访问的,所以通过property装饰器,实现将类方法装饰成属性的形式,对私有属性进行访问   (2

D10——C语言基础学PYTHON

 ̄綄美尐妖づ 提交于 2020-12-13 21:44:57
C语言基础学习PYTHON——基础学习D10 20180906内容纲要:   1、协程      (1)yield     (2)greenlet     (3)gevent     (4)gevent实现单线程下socket多并发   2、简单爬虫   3、select   4、IO多路复用   5、小结   6、练习 1 协程 协程 又叫微线程,纤程。协程是一种用户态的轻量级线程。 协程有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文、和栈保存到其他地方,在切换回来的时候回复先前保存的寄存器上下文和栈。 协程能保存上一次调用时的状态。一个cpu支持上万个协程都不是问题,很适合用于高并发处理。 协程的本质就是单线程。无法利用多核资源。 实现协程主要有以下几种方式: (1)yield 1 # Author:ZhangKanghui 2 3 4 def Producer(): 5 r = con1. __next__ () 6 r = con2. __next__ () 7 n = 0 8 while n < 5 : 9 n += 1 10 con1.send(n) 11 con2.send(n) 12 print ( " \033[32;1m[Producer]\033[0m is making baozi %s " % n) 13 14 def Consumer(name

springboot源码分析-SpringApplication

北战南征 提交于 2020-12-13 14:41:30
SpringApplication SpringApplication类提供了一种方便的方法来引导从main()方法启动的Spring应用程序 SpringBoot 包扫描注解源码分析 @SpringBootApplication public class Springbootv2Application { public static void main(String[] args) { // 创建ApplicationContext并启动 new SpringApplication(Springbootv2Application. class ).run(args); } } /** * Run the Spring application, creating and refreshing a new * { @link ApplicationContext}. * @param args the application arguments (usually passed from a Java main method) * @return a running { @link ApplicationContext} */ public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch