作为一个服务器,响应请求和操作数据库是很重要的。
2018/5/30
Field 操作:
DJANGO 的 models 模块下的 field 函数能够非常方便的帮助我们对数据库进行处理。
总共有。。这些:
__all__ = [ 'AutoField', 'BLANK_CHOICE_DASH', 'BigAutoField', 'BigIntegerField', 'BinaryField', 'BooleanField', 'CharField', 'CommaSeparatedIntegerField', 'DateField', 'DateTimeField', 'DecimalField', 'DurationField', 'EmailField', 'Empty', 'Field', 'FieldDoesNotExist', 'FilePathField', 'FloatField', 'GenericIPAddressField', 'IPAddressField', 'IntegerField', 'NOT_PROVIDED', 'NullBooleanField', 'PositiveIntegerField', 'PositiveSmallIntegerField', 'SlugField', 'SmallIntegerField', 'TextField', 'TimeField', 'URLField', 'UUIDField', ]
当然,函数里面的保留 args 同样很多
verbose_name=None, name=None, primary_key=False, max_length=None, unique=False, blank=False, null=False, db_index=False, rel=None, default=NOT_PROVIDED, editable=True, serialize=True, unique_for_date=None, unique_for_month=None, unique_for_year=None, choices=None, help_text='', db_column=None, db_tablespace=None, auto_created=False, validators=(), error_messages=None
用的比较多的 fields 有:
AutoField 自增 主键必备
1.字段类
models.CharField(max_length=50)
必须有 max_length 作为参数
models.TextField models.BooleanField
2.文件类
models.ImageField models.FileField
其中 imageField 多带 upload_to 参数,后面的文件夹是 media 下的文件夹
3.特殊包装类
models.IPAddressField models.EmailField models.DateTimeField
models.URLField()
用的比较多的 args 有:
max_length 最大长度
default 默认值
null 是否可以为 null
blank 是否可以为空
primary_key 主键
class Meta: 用来定义 model 行为特性
具体可以参考 https://www.cnblogs.com/flash55/p/6265405.html
用的比较多的:
db_table = 表单名字
verbose_name verbose_name_plural 给 model 模型起名字,后面的是 复数形式
ordering 根据什么来排序 ordering= ‘name’ 根据 name 来排序 反向排序 ‘-name’
CRUD:
以 model 名为 User , 内部 field 为 name 和 age 为例
两个常用方法
查:
User.objects.all() 获取 User model 下的全部对象
User.objects.filter(name='',age='') 筛选,括号内的条件为 and 关系
增:新建实例并调用 save() 方法 或者使用我之前在注册那边提到过的 create()
如:
user = User()
user.name = '张三'
user.age = ‘李四’
user.save()
删: 调用 delete 方法
改: 检索出相应的数据之后直接修改即可
Response 我觉得下面这个写的挺好的
https://www.cnblogs.com/huwei934/p/6978641.html
遇到详细的问题的时候我会再回来补充的 \- * -/
1. JSON (2018/5/26 已经修改)
这个用的非常多
由于 Python 中的 dict 对象和 json 可以非常方便的互相转化 所以可以把数据保存在 dict 中直接输出。
response_data = {} try: response_data['result'] = 'SUCCESS' response_data['data'] = json.loads(serializers.serialize('json', datas)) except: response_data['result'] = 'FAIL' response_data['data'] = 'Progress failed during process' return JsonResponse(response_data)