首页 > 其他分享 >Django-2

Django-2

时间:2023-03-06 14:55:06浏览次数:37  
标签:name models Django filter objects User id

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

  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  ---->  通过.进行跨表

标签:name,models,Django,filter,objects,User,id
From: https://www.cnblogs.com/Maxs-message/p/17183923.html

相关文章

  • 08-Redis系列之-Redis布隆过滤器,MySQL主从,Django读写分离
    Redis实现布隆过滤器前言布隆过滤器使用场景比如有如下几个需求:原本有10亿个号码,现在又来了10万个号码,要快速准确判断这10万个号码是否在10亿个号码库中?解决办......
  • 钩子函数,modelfrom组件,django中间件
    钩子函数,modelfrom组件,django中间件钩子函数需求:以上我们写的form组件中写一个注册功能,现在要求判断用户是否已经存在提供了两个自定义的校验方式; 局部钩子:校验单个字......
  • 多对多三种创建方式,django内置序列化组件(drf前身),批量操作数据,分页器思路,自定义
    多对多三种创建方式,django内置序列化组件(drf前身),批量操作数据,分页器思路,自定义分页器的使用,form组件多对多三种创建方式1.全自动创建 classBook(models.Model):......
  • DjangoORM中常见字段和参数
    DjangoORM常见字段和参数 常见字段 AutoFieldint自增列,必须填入参数primary_key=True。当model中如果没有自增列,则自动会创建一个列名为id的列。 IntegerField一......
  • django分页器
    目录aboutPageNumberPagination全局配置1(不推荐)局部配置方式1(不推荐)局部配置方式21(推荐)自定义分页器响应结果LimitOffsetPagination全局配置1(不推荐)......
  • Django——使用顺序
    说明:由于Django是一个web框架,连接前端,后端,数据库的使用。所以需要有大量的配置工作。这里说明一下如果在第一次使用Django时,需要配置哪些东西才能够正常使用和配置顺序......
  • Django Rest_Framework
    作用:大量缩减编写api接口代码 思路:    安装教程1.安装django2.安装djangorestframework3.django的settings.py中注册'rest_framework'使用教程:   ......
  • Django源码-startproject
    Django源码-startprojectDjango的所有命令都位于django/django/core/management/commands/目录下一命令目录django-adminstartprojectproject_name这个命令在源码里......
  • Django源码-测试和调试环境搭建
    Django源码-测试和调试环境搭建一创建虚拟环境mkvirtualenv-ppython3.8.10DjangoSource二安装Djangopipinstalldjango==4.0b1三下载源码方法一gitclon......
  • django终章篇
    从django终章篇1.Cookie和Session1.1基于cookie的登录cookie设置在响应头上,获取在请求头上设置cookie时要先获得一个响应对象(HttpResponse),然后在这个响应对象上......