Django

一,Django入门

1.1基本概念

1.2创建环境与spp项目

安装依赖包

 pip install django -i https://mirrors.aliyun.com/pypi/simple

进入"终端"CMD命令,通过django-admin命令创建django项目

 django-admin startproject helloDjango

通过django-admin命令创建app应用

 django-admin startapp mainapp

在一个Django项目中,存在很多的app应用(模块),创建好的app需要注册到主工程中

(settings.py )

1.3django项目结构

项目结构如下:

 helloDjango
     |--- helloDjango    主工程目录
         |--- settings.py    设置文件,数据库连接,app注册,中间件及模板配置
         |--- urls.py    总路由
         |--- wsgi.py    Django实现wsgi的脚本
         |--- __init__.py
     |--- mainapp    应用模块(主)
         |--- __init__.py
         |--- admin.py   后台配置脚本
         |--- models.py  数据模型类声明所在的脚本
         |--- views.py   声明当前应用的视图处理函数或类
         |--- urls.py    自己增加的当前应用模块的子路由
         |--- test.py    当前应用模块的单元测试类
         |--- apps.py    声明当前应用的基本信息
     |--- manage.py  WEB应用的启动脚本,项目工程的入口

1.4Django请求流程

1.到urls分发器(总)

2.urls分发器根据路由规则(正则)分发到views

3.views去调用Model,交互数据

4.views将数据渲染到模板中

5.模板呈现给用户

二,数据库连接与ORM模型

2.1数据库连接配置

默认是sqllite3数据库,在使用ORM模型之前,需要先生成迁移文件,再执行迁移命令,在数据库中生成这些模型对应的表

  • 先生成迁移文件

 python manage.py makemigrations
  • 开始迁移(生成表,修改表,删除表)

 python manage.py migrate

注意:一旦生成了迁移文件并且迁移成功之后,不要删除迁移文件.

2.2初步使用ORM模型

定义一个用户(客户)模型

 from django.db import models
 class UserEntity(models.Model):
     # 默认情况下会自动创建id主键
     name = models.CharField(max_length=20)
     age = models.IntegerField(default=0)
     phone = models.CharField(max_length=11)
     Class Meta:
         # 指定当前模型类映射成哪一张表
         db_table = 'app_user'

模型创建完成后,先后执行生成迁移文件和迁移

2.3CURD

查询

 UserEntity.objects.all() # 查询所有
 UserEntity.objects.get(pk=id) # 根据主键值查询一个实体对象

增加

 u = UserEntity()
 u.name = '宋六'
 u.age = 30
 u.phton = '18645145620'
 ​
 # 保存模型对象
 u.save()

删除

 u = UserEntity.objects.get(pk=id)
 u.delete() # 删除

修改

 u = UserEntity.object.get(pk=id)
 u.value = value
 u.save()

2.4字段类型

2.5约束

2.6FileField和ImageField

文件字段和图片字段都属性MEDIA多媒体类型的文件,需要在settings.py设置脚本文件中指定MEDIA_ROOT,MEDIA_URL,STATIC_URL,STATICFILES_DIRS

使用ImageField时,必须安装Pillow库

 pip install Pillow

三,Admin的site站点配置

admin站点是django自带的,需要配置

执行命令创建超级用户,和密码

 python .\manage.py createsuperuser   

settings设置

 # 修改语言为中文
 LANGUAGE_CODE = 'zh-hans'
 # 修改时区为亚洲上海
 TIME_ZONE = 'Asia/Shanghai'

模型注册到admin(mainapp文件下的admin.py)

 # 导入模型
 from mainapp.views import UserEntity
 ​
 ​
 # Register your models here.
 ​
 # 修改admin配置
 class UserAdmin(admin.ModelAdmin):
     list_display = ('id', 'name', 'age', 'phone') # 模型显示字段
     list_per_page = 2  # 每一页显示记录数
     list_filter = ('id', 'name', 'age', 'phone')  # 过滤器(一般配置分类字段)
     search_fields = ('id', 'name', 'age', 'phone')
 ​
 # 将模型注册到admin后台中
 admin.site.register(UserEntity, UserAdmin)

访问ip:post/admin

四,综合案例-水果管理

3.1模型设计

 Fruit 水果模型类
     |--- name
     |--- price
     |--- source
     |--- cate_type_id
 ​
 FruitImage 水果图片模型类
     |--- fruit_id
     |--- url
     |--- width
     |--- height
     |--- name
     
 CateType 水果分类
     |--- name
     |--- order_num
 ​
 Store 水果商店
     |--- name
     |--- boss_name
     |--- phone
     |--- address
     |--- city
     |--- lat
     |--- lon
     
 Storedetail 水果商店的详情

3.2模板的基本使用

循环语句块

 {% for item in items %}
     
 {% endfor %}

分支循环

 {% if 条件表达式 %}
 ​
 {% endif %}

变量

 {{ 变量名 }}

在views.py视图函数中,渲染模板

 return render(request,'fruit/list.html',locals())

###

3.3页面设计

 {% block name %}
 ​
 {% endblock %}
 {% extends "base.html" %}

四,模型的Meta元信息

在模型类中,声明内部类Meta,类成员可以有如下的变量:

  • db_table

  • ordering

  • verbose_name

  • verbose_name_plural

  • unique_together

  • abstract布尔类型,表示当前的模型类是否为抽象类,如果抽象类,则不会wbvf

五,渲染模板的render()方法有哪些参数,分别代表什么含义

  • request请求对象,是django.http.HttpRequest类的对象

  • 模板的html文件,是字符串类型,文件位置相对于templates目录的

  • context上下文,是dict字典类型,可以使用locals()将本地的变量转成字典对象

六.CURD深度使用

6.1 了解模型中的objects是什么?

默认情况下,模型类中会创建一个Manage类的对象,赋给objects

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值