MVC介绍

Django生命周期

many-to-many
One-to-many Django常用字段
CharFiled 需要有max_length unique=True(代表不能重名)
EmailFiled
URLField
ManyToManyField(哪个表) #多对多的关系
ForeignKey(哪个表) #一对多的关系
DateTimeField #精确到秒或者分
DateField #精确到天
==
DurationField
DecimalField #小数
FloatField
SmallIntegrField
TextField
TimeField
=======常用的属性===
unique
null=True 数据库那里可以为空,默认不能为空。数据库可以为空,前端不行。加上blank=True
blank=True 前端那里可以为空,限制的是Django admin
verbose_name=u'中文傻傻' #把字段在前端用中文显示
choices
db_index #给字段做索引(不常用)
editable=False #Django前端页面某项不能修改,消失了。。。。
error_messages
help_text="help.....dddddd....." #前端告诉用户怎么填,地下出现写的提示 =========
一个表对应一个类
class Author(models.Model): #作者表
first_name = models.CharFiled(max_length=32,unique=True)
last_name = models.CharFiled(max_length=32)
class Meta:
verbose_name_plural = u'作者' #在Django中的前端把表名用中文显示 def __unicode__(self): #py3.0的是 __str__
return 'xxxx' ======
python manager.py migrate
makemigrations #做检查生成SQL语句
migrate #执行
========== 前端admin默认不出现准确字段,(出现的是XXX object,
如果想看到显示的具体是什么,需要在类下写
def __unicode__(self): #py3.0的是 __str__
return ""
=========================================================================
上面用了Django的admin对数据库进行操作,下面是常用命令的方式
导入models模块
默认不配置环境变量是不能导入的,可以用调试模式,如下
python manager.py shell #进入调试模式 from app01 import models models.Author.objects.all() #查找所有
last() #查找最后 修改:
先找到,在修改 改完保存
a1 = models.Author.objects.last()
a1.last_name = "xxxxx"
a1.save()
创建
new_author_obj = models.Author(first_name="NewNname",last_name="NewLastName")
new_author_obj.save()
第二种创建方式不用在保存一次 直接会保存
new_author_obj = models.Author.objects.create(first_name="NewNname2",last_name="2NewLastName")
过滤
models.Author.objects.filter(last_name="NewLastNname",first_name="NewNname")
模糊过滤 两个下划线 __contains 大小写忽略 __icontains id__range=[2,4] 取id的
models.Author.objects.filter(last_name__contains="NewLastNname")
批量修改 .update
models.Author.objects.filter(last_name__icontains="NewLastNname").update(last_name=“hhh”) 连锁查询 order_by 查询书有多少个作者
b1 = models.Book.objects.last()
b1.authors
这个时候返回出现的是一个对象,类似于<xxxxx object at xxxxx>,如果想正常显示,需要加select_related()
b1.authors.select_related()
删除
b1.deleted()
Django forms
http://www.cnblogs.com/BeginMan/archive/2013/09/06/3306081.html
1、特点
django forms是Django的表单处理库。依赖HttpRequest,它具有如下特点:
(1)、快速自动生成HTML表单
(2)、表单数据校验
(3)、错误信息提示
(4)、自动转换为python数据格式 Django中的Form一般有两种功能
1、输入HTML,自动生成前端表单
2、验证用户输入,验证输入的合法性 使用
1:单独创建一个forms文件,
from django import forms
class BookForm(forms.Form):
name = forms.CharField(max_length=10)
......
2:在views里把创建的forms返回给前端, form.is_valid 验证数据 form.cleaned_data 获取干净的数据 去掉html那些没用的
from app01 import forms
def book_form(request):
form = forms.BookForm() #生成实例
return render(request,'app01/book_form.html', {'book_form':form })
3:然后前端调用 book_form,单独取一个值,就是{{book_form.name}}
{{book_form}}
具体事例
<form action="" method="post">{% csrf_token %} #建立form表单 做提交用 和 Ajax差不多
{{book_form}}
<input type="submit" value = "创建">
</form> Blog和Entry有外键关联 一对多的反向查询
class Blog:
pass
class Entry:
blog = modles.ForeignKey(Blog)
通过Entry获取Blog name 为XXX的字段
models.Entry.objects.get(blog__name="xxxx")
另一种反向关联查询)跟这个出版社相关的书都查出来
class Publiser(models.Models):
pass
class Book(models.Models):
publiser = models.ForeignKey(Publiser) pub_obj = models.Publiser.objects.last()
print(pub_obj.book_set.select_related()) 查询某个字段的值小与某某个字段的值 ORM F语句
>>> from django.db.models import F
>>> Entry.objects.filter(n_comments__gt=F('n_pingbacks')) ORM Q语句 满足第一个and满足第二个,满足第二个的第一个或第二个
Poll.objects.get(
Q(question__startswith='Who'),
Q(pub_date=date(2005, 5, 2)) | Q(pub_date=date(2005, 5, 6))
) 统一自增
models.Entry.objects.update(n_pingbacks=F('n_pingbacks')+1) 表内分类聚合 values_list annotate分类统计(分类统计各项资产服务器、网络设备各有多少台)
models.Book.objects.values_list('publish_date').annotate(Count('publish_date')) OneToOneField和ForeignKey的区别
一对一和一对多 Djanog admin内显示中文
class Meta:
verbose_name = u'班级列表'
verbose_name_plural = u'班级列表' #复数形式
unqiue_together = ('course','course_type','semester') #联合为一 在自己的脚本里调用 Django models
加上环境变量就ok了
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 's12day16.settiongs' #s12day16 是你的setting所在的项目名
import django
django.setup()
form blog import models
entry = models.Entry.objects.get(pk=1)
print(entry)

 

Django用户认证系统
扩展 Django用户认证系统 先继承 在扩展
from django.contrib.auth.models import User class UserProfile(models.Model):
user = models.OneToOneField(User) #通过一对一的方式 引用 Django的用户认证系统,然后下面的去扩展name school......
name = models.CharField(max_length=64)
school = models.ForeignKey('School') Django中构建表结构 自己关联自己,见例子第一个视频35分钟处。
models.ForeignKey('self' ,blank = True,null = true) #自己的这个表还没创建,所以就要用引号括起来 让字段在admin上显示中文 verbose_name = u'汉字'
consultant = models.ForeignKey('UserProfile',verbose_name=u'汉字')
或者
date = models.DateField(u'汉字',auto_now_add = True) #把u‘汉字’放到前面 Django中引用Bootstrap
1修改url,在主的URL下的跳转到单独项目上自己控制
url(r'^crm/', include('crm.urls')
2子项目里添加url文件,定义views文件的逻辑关系
url(r'^$',views,dashboard)
新建statics目录,下载Bootstrap添加进去
3修改 settings文件,添加如下:
STATICFILES_DIRS = [
os.path.join(BASE_DIR,"static")
#'/var/www/static/' #可以写很多个从第一个开始找,直到最后
]
4前端文件 引用 /static/bootstrap/css/....
static而不是statics 这样就无需关系 statics目录修改后在去找前端一个个的修改

  

Django (二) 常用字段及 ORM的更多相关文章

  1. Django:常用字段、手动自动第三张表单、元信息

    一.常用字段和非常用字段 二.手动,自动创建第三张表 三.元信息 四.defer和only 一.常用字段和非常用字段 -常用字段 AutoField int自增列,必须填入参数 primary_key ...

  2. Django中常用字段

    一.Django框架的常用字段 Django ORM 常用字段和参数 常用字段 常用字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列 ...

  3. django model常用字段类型

    摘自 http://www.cnblogs.com/wt869054461/p/4014271.html V=models.AutoField(**options) #int:在Django代码内是自 ...

  4. Django models 常用字段类型

    1.CharField字符串字段,存较短的字符串,长文本要用TextField.必须的参数:max_length 字符的最大长度2.TextField容量很大的文本字段.admin中用 <tex ...

  5. day07 ORM中常用字段和参数

    day07 ORM中常用字段和参数 今日内容 常用字段 关联字段 测试环境准备 查询关键字 查看ORM内部SQL语句 神奇的双下划线查询 多表查询前提准备 常用字段 字段类型 AutoField in ...

  6. Django ORM中常用字段和参数

    一些说明: 表myapp_person的名称是自动生成的,如果你要自定义表名,需要在model的Meta类中指定 db_table 参数,强烈建议使用小写表名,特别是使用MySQL作为后端数据库时. ...

  7. Django ORM 常用字段和参数

    Django ORM 常用字段和参数 一:常用字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. I ...

  8. django创建ORM模型、通过ORM模型操作单个表、ORM模型常用字段

    一.ORM简介 ORM ,全称Object Relational Mapping,中文叫做对象关系映射,通过ORM我们可以通过类的方式去操作数据库,而不用再写原生的SQL语句.通过把表映射成类,把行作 ...

  9. Django框架(九) Django之ORM常用字段和参数

    ORM字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. IntegerField 一个整数类型,范 ...

随机推荐

  1. 最大区间和变形 - codeforces

    题意 : 可以选择操作一串区间,将区间内的某一个数全部变成一个新的数字,询问整个区间中某个数字的出现次数总共有多少个? 思路分析 : 首先最后选的一定是一个区间,然后 ans = cnt(1, l-1 ...

  2. IDEA使用 磨刀霍霍向代码

    工欲善其事,必先利其器 ,当下有数不清的 Java 程序员将石器时代的 Eclipse 替换成了现代化的智能开发工具 InteliJ IDEA ,写代码的小日子过得不亦乐乎(玩笑话,两者各有千秋,看个 ...

  3. 神器| 这款软件让win系统像Mac系统一样的好用!

    每天进步一丢丢,连接梦与想 输不起的人,往往就是赢不了的人 使用过 Mac OS X 系统的朋友可能都会使用过自带的 Quick Look 快速预览功能,用鼠标选中一个文件后,再按下键盘空格键就会弹出 ...

  4. 从零开始ming的多人联机游戏--游戏客户端(1)六边形地图

    打算做的小游戏是一个多人联机的策略类游戏,类似于<文明>那种 游戏的玩法并不确定,开这个坑主要是为了入门后端开发,顺便熟悉下游戏开发 这篇文章使用unity,实现了六边形单元地图的创建.后 ...

  5. Java 使用 UnixSocket 调用 Docker API

    在 Docker 官网查阅 API 调用方式 例如:查询正在运行的容器列表,HTTP 方式如下: $ curl --unix-socket /var/run/docker.sock http:/v1. ...

  6. jemeter察看结果树中文乱码解决办法

    在使用jemeter进行接口测试时,在察看结果树查看接口返回结果时,中文全部显示乱码,这个问题的解决方式如下: 在jemeter的安装路径下面,找到bin目录下, 在bin目录下面找到这个文件:jme ...

  7. SpringCloud学习之搭建eureka集群,手把手教学,新手教程

    一.为什么需要集群 上一篇文章讲解了如何搭建单个节点的eureka,这篇讲解如何搭建eureka集群,这里的集群还是本地不同的端口执行三个eureka,因为条件不要允许,没有三台电脑,所以大家将就一下 ...

  8. Java框架-MyBatis三剑客之MyBatis Generator(mybatis-generator MBG插件)详解

    生成器设计思路: 连接数据库 -> 获取表结构 -> 生成文件 1 下载与安装 官网文档入口 最方便的 maven 插件使用方式 贴至pom 文件 2 新建配置文件 填充配置信息(官网示例 ...

  9. springIOC源码接口分析(二):ConfigurableBeanFactory

    一 继承功能 1 SingletonBeanRegistry接口 此接口是针对Spring中的单例Bean设计的.提供了统一访问单例Bean的功能,类中定义了以下方法: 2 HierarchicalB ...

  10. Mybatis框架配置讲解以及使用

    1.什么是Mybatis MyBatis 是一款优秀的持久层框架, 它支持定制化 SQL.存储过程以及高级映射. MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.·MyB ...