最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

Django-2

来源:博客园


【资料图】

1.获取多个数据及文件的上传和接收

  • request.POST
  • request.GET
  • request.FILES
  • request.POST.getlist()

注意: 上传文件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.传入值为字典

    {% for k, v in dict.items %}
  • {{k}}-{{v}}
  • {% endfor %}

2.传入为tuple或list

  • {{tuple.0}}
  • {{tuple.1}}
  • {{tuple.2}}
  • {{tuple.3}}

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中字段的介绍

  1. CharField:用于存储字符串类型的数据,最大长度为255个字符。
  2. TextField:用于存储长文本数据,最大长度为无限制。
  3. IntegerField:用于存储整数类型的数据,可以指定最小值和最大值。
  4. FloatField:用于存储浮点类型的数据。
  5. DecimalField:用于存储精确的十进制数,可以指定最大小数位数。
  6. BooleanField:用于存储布尔类型的数据,只能存储True或False。
  7. DateTimeField:用于存储日期和时间类型的数据。
  8. DateField:用于存储日期类型的数据。
  9. TimeField:用于存储时间类型的数据。
  10. EmailField:用于存储电子邮件地址类型的数据。
  11. URLField:用于存储URL类型的数据。
  12. FileField:用于上传文件类型的数据,存储文件路径。
  13. ImageField:用于上传图片类型的数据,存储图片路径。
  14. ForeignKey:用于关联模型之间的关系,表示一对多的关系。
  15. ManyToManyField:用于关联多个模型之间的关系,表示多对多的关系。
  16. 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  ---->  通过.进行跨表

关键词: 上传文件 整数类型 字符串类型