1.获取多个数据及文件的上传和接收
- request.POST
- request.GET
- request.FILES
- request.POST.getlist(
注意: 上传文件form的特殊设置:
<form action="" method="POST" enctype='multipart/form-data' >
<input type="file">
</form>
# 接收file文件
obj = request.FILES.get('fafafa'
f = open(obj.name, mode='wb'
for item in obj.chunks(:
f.write(item
f.close(
2.CBV(class base view和FBV(function base view
其中CBV可以调用dispatch方法给请求前后都加上功能
class Order(views.View: def dispatch(self, request, *args, **kwargs: print('somethings' res = super(Order, self.dispatch(request, *args, **kwargs return res
3.jinjia2渲染模版语言
1.传入值为字典
<ul>
{% for k, v in dict.items %}
<li>{{k}}-{{v}}</li>
{% endfor %}
</ul>
2.传入为tuple或list
<ul>
<li>{{tuple.0}}</li>
<li>{{tuple.1}}</li>
<li>{{tuple.2}}</li>
<li>{{tuple.3}}</li>
</ul>
4.通过include做路由分发
url(r'^cmdb', include("app01.urls"
url(r'^monitor', include("app02.urls"
# url变化 -> ip:port/cmdb/...
# ip:port/monitor/...
5.orm框架链接mysql的配置
1.配置setting.py
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', "NAME": 'dbname', 'USER': 'root', 'PASSWORD': 'XXX', 'HOST': "localhost", 'PORT': '3306' } }
2.在大目录的__init__.py中改成Mysql引擎
import pymysql pmysql.install_all_as_MySQLdb(
6.Django中字段的介绍
- CharField:用于存储字符串类型的数据,最大长度为255个字符。
- TextField:用于存储长文本数据,最大长度为无限制。
- IntegerField:用于存储整数类型的数据,可以指定最小值和最大值。
- FloatField:用于存储浮点类型的数据。
- DecimalField:用于存储精确的十进制数,可以指定最大小数位数。
- BooleanField:用于存储布尔类型的数据,只能存储True或False。
- DateTimeField:用于存储日期和时间类型的数据。
- DateField:用于存储日期类型的数据。
- TimeField:用于存储时间类型的数据。
- EmailField:用于存储电子邮件地址类型的数据。
- URLField:用于存储URL类型的数据。
- FileField:用于上传文件类型的数据,存储文件路径。
- ImageField:用于上传图片类型的数据,存储图片路径。
- ForeignKey:用于关联模型之间的关系,表示一对多的关系。
- ManyToManyField:用于关联多个模型之间的关系,表示多对多的关系。
- OneToOneField:用于关联两个模型之间的关系,表示一对一的关系。
7.单表的增删改查
增
models.User.objects.create(name='qianxiaohu',age=18
dic = {'name': 'xx', 'age': 19}
models.User.objects.create(**dic
obj = models.User(name='qianxiaohu',age=18
obj.save(
删
models.User.objects.filter(id=1.delete(
改
models.User.objects.filter(id__gt=1.update(name='alex',age=84
dic = {'name': 'xx', 'age': 19}
models.User.objects.filter(id__gt=1.update(**dic
查
models.User.objects.filter(id=1,name='root'
models.User.objects.filter(id__gt=1,name='root'
models.User.objects.filter(id__lt=1
models.User.objects.filter(id__gte=1
models.User.objects.filter(id__lte=1
models.User.objects.filter(id=1,name='root'
dic = {'name': 'xx', 'age__gt': 19}
models.User.objects.filter(**dic
v1 = models.Business.objects.all(
# QuerySet ,内部元素都是对象
8.一对多关系
1.Foreign key
user_group = models.ForeignKey('UserGroup', to_field='uid', default=1
# 1. 在数据库中创建的字段是user_group_id. 表示关联id
# 2. user_group表示对象. 可以对Usergroup进行跨表操作
2.增删改查操作
models.UserInfo.objects.create(username="root",
password="123",
user_group_id=2 # user_group则需要传对象
# QuerySet ,内部元素都是字典
v2 = models.Business.objects.all(.values('id','caption'
# QuerySet ,内部元素都是元组
v3 = models.Business.objects.all(.values_list('id','caption'
# 获取到的一个对象,如果不存在就报错
models.Business.objects.get(id=1
对象或者None = models.Business.objects.filter(id=1.first(
外键:
v = models.Host.objects.filter(nid__gt=0
v[0].b.caption ----> 通过.进行跨表