初识Django

1.安装django

pip install django

安装之后的目录

...\python36
 - python.exe
 - Scripts
    - pip.exe
    - django-admin.exe
 - Lib
    - 内置模块
    - site-packages
       - django

2. 创建项目

2.1 终端创建

  • 打开终端
  • 进入项目目录

如:D:\python\django\01\

  • 执行命令创建
"%python path%\django-admin.exe" startproject 项目名称
django-admin startproject 项目名称 #配置了环境变量

2.2 Pycharm创建

2.3 默认项目结构

项目名称
	- manage.py # 启动项目、创建app、数据管理
  - 项目名称
    - _init_.py    
    - settings.py   # 项目配置
    - urls.py       # url和函数的对应关系
    - asgi.py       # 接收网络请求
    - wsgi.py       # 接收网络请求

3. APP应用

- 项目
  - app1 # 用户管理【表结构、函数、模板、样式】
  - app2 # 订单管理
  - app3 # API接口

app创建

3.1 目录结构

└─── app01

│ ├───_init_.py

│ ├─── admin.py # 默认的admin功能

│ ├─── apps.py #

│ ├─── migrations # 数据库变更记录

│ ├─── models.py # 数据库操作

│ ├─── tests.py # 单元测试

│ ├─── views.py # 视图函数

4. 快速上手

  • 注册app

settings.py中添加apps.py

  • 编写URL和视图函数对应关系

urls.py

  • 编写视图函数

  • 启动django项目
    • 命令行启动
python manage.py runserver
    • Pycharm启动

4.1 新增页面

重复以上过程

4.2 模板路径

  • 优先去根目录寻找(需要先配置settings.py)
  • 根据app的注册顺序,在每个app下面的templates目录中寻找

4.3 静态文件

开发一般将图片、CSS、js作为静态文件处理。

  1. 在app目录下创建static文件夹

  2. 页面引用
{% static %}
<img src="{% static 'img/1.jpg' %}">

5. 数据库操作

5.1 安装第三方模块

pip install mysqlclient

5.2 queryset.Filter

__exact 精确等于 like 'aaa'
 __iexact 精确等于 忽略大小写 ilike 'aaa'
 __contains 包含 like '%aaa%'
 __icontains 包含 忽略大小写 ilike '%aaa%',但是对于sqlite来说,contains的作用效果等同于icontains。
__gt 大于
__gte 大于等于
__lt 小于
__lte 小于等于
__in 存在于一个list范围内
__startswith 以...开头
__istartswith 以...开头 忽略大小写
__endswith 以...结尾
__iendswith 以...结尾,忽略大小写
__range 在...范围内
__year 日期字段的年份
__month 日期字段的月份
__day 日期字段的日
__isnull=True/False

字典,如
condtions: {'date__lt': '2018-05-22','status': '未支付','name__exact': 'yangxia'}
Entry.objects.filter(**condtions)
Entry.objects.filter(date__lt= '2018-05-22',status='未支付',name__exact='yangxia')

翻译后的sql语句是
select * from  Entry.objects where date<='2018-05-22' and status='未支付' and name like 'yangxia'

5.3 聚合查询-aggregate

aggregate()是QuerySet的一个终止子句,返回得是包含键值对得字典,其中值通过聚合函数计算,默认会生成一个键,同时也可以指定。

from django.db.models import Max,Avg,F,Q
# 默认键
models.Book.objects.all().aggregate(Avg("price"))
{'price__avg': 192.593333}

# 指定键
models.Book.objects.all().aggregate(avg_price=Avg("price"))
{'avg_price': 192.593333}


from django.db.models import Max,Avg,F,Q,Min,Count,Sum
# 聚合多个字段
models.Book.objects.all().aggregate(Avg("price"),Max("price"),Min("price"),Sum("price"))
{'price__avg': 192.593333, 'price__max': Decimal('233.33'), 'price__min': Decimal('111.12'), 'price__sum': Decimal('577.78')}

5.4 组合查询-annotate

annotate对数据分组然后再进行某些聚合操作,annotate返回包含聚合字段的结果集

models.Book.objects.all().annotate(authorNum=Count("author"))

book_list = models.Book.objects.all().annotate(authorNum=Count("author"))
for book in book_list:
    print(book)
# book包含book字段和authorNum

5.5 F查询

F函数表示在查询中引用数据库字段

models.Book.objects.filter(id__gt=F("price"))
# 将book表中的id与price字段进行比较

models.Book.objects.filter(id__lt=F("price")/2)
# 将book表中的id与price字段除以2后进行比较

models.Book.objects.update(title=Concat(F("title"),Value("("),Value("第"),Value(")")))
# 连接字段

models.Book.objects.annotate(Sum(F("price")*F("id")))

5.6 Q查询

models.Book.objects.filter(Q(name="化学") | Q(name="务理"))
# 查询名称是化学或物理的书

models.Book.objects.filter(Q(name="化学") & ~Q(year=2023))
# 查询名称是化但不是2023年的书

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苜蓿花乐园

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值