Django-2

科技资讯 投稿 5000 0 评论

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

赞同 (21) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽