推荐
最新
Django
dirtree
mysite :pycharm默认的项目根目录,import会正常导入下面的各个目录.
- db.sqlite3 :对应了models.py.数据库中的表名如:app1_usertype..
- manage.py :python manage.py startapp app1
- mysite
- __init__.py :python3可以不需要.
- settings.py :数据库,指定html路径,指定添加的app..
- urls.py :route(rul->method)
- wsgi.py :一般会替换为uWSGI+NGINX,性能更好一些.
- templetes :html
- master.html :属于公共的html模板,实现了大部分公共界面,里面预留了一些block,等待他业务html继承.
- static :js,images,video..
- app1
- templetestags
- func.py :里面定义一些函数共html中使用
- migrations :记录数据库的每次修改
- admin.py :后台管理
- apps.py :对当前app1的配置
- models.py :每个类都对应了数据中的一张表!
- views.py :业务处理,回调函数对应于urls.py.
- tests.py :单元测试
- middle
m1.py :中间件,对应于settings.py-MIDDLEWARE.
python manage.py createsuperuser # 建立超级管理员,对应admin.py!
python manage.py makemigrations # 修改model后同步到数据库
python manage.py migrate # 应用上面的更改
settings.py
INSTALLED_APPS = (
....
'app1', # 不然models的类不能配合makemigrations同步到数据库!
)
DATABASES = (
'default': {
# django默认使用mysqldb连接,故需要在mysite/__init__.py中需要'import pymysql && pymysql.install_as_MySQLdb()'
'ENGINE': 'django.db.backends.mysql',
'NAME': 'dbname', # 必须是已经创建好的数据库
'USER': 'root',
'PASSWORD': 'pwd',
'HOST': '',
'PORT': '',
}
)
STATICFILES_DIR = (
os.path.join(BASE_DIR, 'static'), # 配置静态文件目录
)
SESSION_ENGINE='django.contrib.sesssions.backends.cache' # session默认放在数据库中
MIDDLEWARE = [
....
'middle.m1.CMiddleWare1',
]
models.py
from django.db import models
class UserType(models.Model):
# 会隐含的创建id自增主键列.
name = models.CharField(max_length=32) # 表UserType的第一列.
class UserInfo:
''' 其他参数
blank :admin中是否可以为空
help_text:admin中的提示信息
db_index :是否对该列建立索引,经常做查询key的列需要建立.
unique :唯一索引
auto_now :在更新记录的时候,该列会自动更新时间,精确到微妙!
auto_now_add :在创建新记录的时候,该列会自动插入当前时间!
'''
uid = models.AutoFiedl(primary_key=True) # 自指定自增列
username = models.CharField(verbose_name='用户名',max_length=16) # 用户名可以在views中使用ModeForm使自动取值
pwd = models.CharField(max_length=16,null=True) # 注意:若之前其他列都有好多数据了,则新添加的列必须指定值,不然会有提示!
email = models.EmailField(max_length=16) # 实际上仅能够对admin的表单数据做验证!
user_type_id = models.IntegerField(choices=((0,'超级用户'),(1,'普通用户')), default=1) # admin中会显示下拉框
# 可直接访问关联的表: row.user_type.name
# 类型是UserType.uid(默认就是主键关联),列明会被自动修改为user_type_id.
user_type = models.ForeignKey('UserType', to_field='uid')
# 通常在Views.py导入,然后取得数据库的数据后传递给render参数!
# filter()+values()过滤中使用双下划线用于跨表取数据,相当于对象的点语法!
models.UserInfo.objects.create(username='root',pwd='123') # 或-->
models.UserInfo.objects.filter(username='root').delete() # 也可以all().delete()
models.UserInfo.objects.filter(username='root').update(pwd=1) # 改密码
models.UserInfo.objects.filter(username='root').first() # 找到第1个匹配,不存在==None!
.all().values('col1','user_type__name') # [{'col1':v, 'col2':v}...],限定仅取指定的列
for r in models.UserInfo.objects.all(): # [userinfo_obj, ...]
r.id, r.username, r.pwd
admin.py
后台管理用的,必须把^admin映射添加到urls.py中!
Audio
https://mediaarea.net/en/MediaInfo
https://sourceforge.net/projects/audacity/
正常人听力范围在: 20~20KHz. 根据那奎斯特定理,采样率应该在40KHz左右.
Software Engineering
Software Engineering
http://www.uml.org.cn/oobject/OObject.asp
http://www.xin3721.com/eschool/rjgcjc/
UML: Unified Modeling Language
软件需求
需求分析 ➕ 需求定义 ➡️ 快速原型 ➡️ 需求说明书文

















