Django-2
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 ----> 通过.进行跨表
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django获取多个数据及文件的上传和接收 - Python技术站