PythonWeb Django PostgreSQL创建Web项目(四)

首先我们先尝试总结一下可用的模型model字段类型,然后根据字段类型丰富现有的DoctorInfo应用模型,然后增加新的展示详情界面

1. 结合POSTGRESQL对应字段类型以及方法

先加入我们已经加入模型中的模型字段,在使用前我们需要先引入对应的内容

from django.db import models
import uuid
import django.utils.timezone as timezone
方法 介绍 使用示例
UUIDField postgresql中带有UUID类型字段 ;一个用于存储通用唯一标识符的字段。使用 Python 的 UUID 类。当在 PostgreSQL 上使用时,它存储在一个 uuid 的数据类型中,否则存储在一个 char(32) 中。 did = models.UUIDField(primary_key=True,default=uuid.uuid4,editable=False)
CharField 字符,参数可设置该字段的最大长度(以字符为单位),要注意部分数据库限制,大量文本建议使用TextField fieldname = models.CharField(max_length=20)
DateTimeField 时间字段
BooleanField 布尔类型字段
EmailField Email类型字段 使用 EmailValidator 来检查该值是否为有效的电子邮件地址。
ForeignKey 指定外键 一个多对一的关系。需要两个位置参数:模型相关的类和 on_delete 选项。 doc = models.ForeignKey(对应模型类,on_delete=models.CASCADE)
AutoField 自增长类型一个 IntegerField,根据可用的 ID 自动递增。你通常不需要直接使用它;如果你没有指定,主键字段会自动添加到你的模型中
BigAutoField 一个 64 位整数,与 AutoField 很相似,但保证适合 1 到 9223372036854775807 的数字
BigIntegerField 一个 64 位的整数,和 IntegerField 很像,只是它保证适合从 -9223372036854775808 到 9223372036854775807 的数字。该字段的默认表单部件是一个 NumberInput。
BinaryField 一个用于存储原始二进制数据的字段。可以指定为 bytes、bytearray 或 memoryview.默认情况下,BinaryField 将 ediditable` 设置为 False.可选参数max_length
TextField 一个大的文本字段。该字段的默认表单部件是一个 Textarea。
DateField default=date.today ——来自 datetime.date.today()
DateTimeField default=timezone.now ——来自 django.utils.timezone.now()
DecimalField 一个固定精度的十进制数,两个必要参数DecimalField.max_digits允许的最大位数DecimalField.decimal_places和数字一起存储的小数位数
DurationField 一个用于存储时间段的字段——在 Python 中用 timedelta 建模。当在 PostgreSQL 上使用时,使用的数据类型是 interval 否则使用微秒的 bigint
FileField 一个文件上传字段,不支持primary_key 参数,可选参数FileField.upload_to提供了一种设置上传目录和文件名的方式 FileField.storage 一个存储对象,或是一个返回存储对象的可调用对象。它处理你的文件的存储和检索
FieldFile 当你访问一个模型上的 FileField 时,你会得到一个 FieldFile 的实例作为访问底层文件的代理
FilePathField 一个 CharField,其选择仅限于文件系统中某个目录下的文件名。有一些特殊的参数,其中第一个参数是 必须的。FilePathField.path必须的。一个目录的绝对文件系统路径,这个 FilePathField 应从该目录中获取其选择
FloatField 在 Python 中用一个 float 实例表示的浮点数
GenericIPAddressField IPv4 或 IPv6 地址,字符串格式(如 192.0.2.30 或 2a02:42fe::4 )。
ImageField 继承 FileField 的所有属性和方法,但也验证上传的对象是有效的图像。 ImageField 也有 height 和 width 属性。ImageField 实例在数据库中创建为 varchar 列,默认最大长度为 100 个字符 pip install pillow你需要为你的 Python 安装 pillow,pillow 是一个 Python 图像库
IntegerField 一个整数。从 -2147483648 到 2147483647 的值在 Django 支持的所有数据库中都是安全的。
JSONField 个用于存储 JSON 编码数据的字段。在 Python 中,数据以其 Python 本地格式表示:字典、列表、字符串、数字、布尔值和 None。PostgreSQL 有两种基于 JSON 的原生数据类型: json 和 jsonb。json 和 jsonb。它们之间的主要区别在于它们的存储方式和查询方式。PostgreSQL 的 json 字段是作为 JSON 的原始字符串表示来存储的,当根据键来查询时,必须同时进行解码。jsonb 字段是基于 JSON 的实际结构存储的,它允许索引。这样做的代价是在写入 jsonb 字段时增加了一点成本。JSONField 使用 jsonb。
PositiveBigIntegerField 就像一个 PositiveIntegerField,但只允许在某一特定点下的值(依赖于数据库)。0 到 9223372036854775807 的值在 Django 支持的所有数据库中都是安全的。
PositiveIntegerField 就像 IntegerField 一样,但必须是正值或零( 0 )。从 0 到 2147483647 的值在 Django 支持的所有数据库中都是安全的。出于向后兼容的原因,接受 0 的值。
TimeField 一个时间,在 Python 中用 datetime.time 实例表示。接受与 DateField 相同的自动填充选项。
URLField URL 的 CharField,由 URLValidator 验证。

从目前来看,Django提供的模型字段方法非常丰富而且大部分与数据库都有对应类型关联

2.丰富DoctorInfo应用的模型

那么接下来我们可以接着继续丰富我们的自定义model了

from django.db 
### HTML 网页代码实现过年烟花效果 为了创建具有春节氛围的烟花效果,可以采用HTML5 `Canvas` 和 JavaScript 结合的方式。下面是一个简单版本的烟花爆炸动画示例: #### 完整HTML文件结构如下所示: ```html <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>新年快乐 - 烟花秀</title> <style> body { margin: 0; overflow:hidden;background-color:#000;} canvas { display:block } </style> </head> <body> <canvas id="fireworks"></canvas> <script> class Particle { constructor(x, y) { this.x = x; this.y = y; this.color = 'hsl(' + Math.random() * 360 + ', 100%, 70%)'; this.size = Math.random() * 4 + 1; this.speedX = (Math.random() - .5) * 10; this.speedY = (Math.random() - .5) * 10; this.alpha = 1; } update(ctx) { ctx.globalAlpha = this.alpha -= 0.01; ctx.fillStyle = this.color; ctx.beginPath(); ctx.arc(this.x += this.speedX, this.y += this.speedY, this.size, 0, Math.PI * 2); ctx.fill(); if (this.alpha <= 0) particles.splice(particles.indexOf(this), 1); } } let canvas = document.getElementById('fireworks'); let context = canvas.getContext('2d'); canvas.width = window.innerWidth; canvas.height = window.innerHeight; window.addEventListener('resize', function () { canvas.width = window.innerWidth; canvas.height = window.innerHeight; }); function createFirework(event) { let mouseX = event.clientX || event.touches[0].clientX; let mouseY = event.clientY || event.touches[0].clientY; for (var i = 0; i < 100; i++) { particles.push(new Particle(mouseX, mouseY)); } } document.body.addEventListener('click', createFirework); let particles = []; function animate() { requestAnimationFrame(animate); context.clearRect(0, 0, innerWidth, innerHeight); for (let particle of particles) { particle.update(context); } } animate(); </script> </body> </html> ``` 此段脚本定义了一个名为Particle的对象来表示单个火花粒子,并设置了其属性如位置、颜色、大小以及速度等[^1]。 页面加载完成后会监听窗口尺寸变化事件以便调整画布大小适应不同设备屏幕;同时绑定了鼠标点击事件,在用户点击处生成一组随机分布的小颗粒模拟烟花的过程[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值