Django入门(上)

简介: Django的初步认识与应用

1.Django介绍


1.1Django历史


  • Django一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。
  • 这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的
  • 官方网站:https://www.djangoproject.com/


1.2Django核心组件


  • M 代表模型(Model),即数据存取层。该层处理与数据相关的所有事务:如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。
  • T 代表模板(Template),即表现层。该层处理与表现相关的决定:如何在页面或其他类型文档中进行显示。
  • V 代表视图(View),即业务逻辑层。该层包含存取模型及调取恰当模板的相关逻辑。我们可以把它看作模型与模板之间的桥梁。


1.3Django版本


image.png


1.4Django安装


image.png


1.5Django工作机制


  • 用manage .py runserver 启动Django服务器时就载入了在同一目录下的settings .py。该文件包含了项目中的配置信息,如前面讲的URLConf等,其中最重要的配置就是ROOT_URLCONF,它告诉Django哪个Python模块应该用作本站的URLConf,默认的是urls .py。
  • 当访问url的时候,Django会根据ROOT_URLCONF的设置来装载URLConf。
  • 然后按顺序逐个匹配URLConf里的URLpatterns。如果找到则会调用相关联的视图函数,并把HttpRequest对象作为第一个参数(通常是request)。
  • 最后该view函数负责返回一个HttpResponse对象

image.png

image.png


1.6Djangom目录说明


  • manage.py,一个命令行工具,可以使用多种方式对Django项目进行开发交互
  • settings.py,项目的配置文件
  • urls.py,项目的URL配置
  • wsgi.py,项目与WSGI兼容的web服务器入口


1.7Django基本命令


  • django-admin startproject sitename(创建一个工程)
  • python manage.py runserver ip:port  (启动服务器,默认ip和端口为http://127.0.0.1:8000/)
  • python manage.py startapp appname  (新建 app)
  • python manage.py syncdb  (同步数据库命令,Django 1.7及以上版本需要用以下的命令)
  • python manage.py makemigrations  (显示并记录所有数据的改动)
  • python manage.py migrate  (将改动更新到数据库)
  • python manage.py createsuperuser  (创建超级管理员)
  • python manage.py dbshell  (数据库命令行)
  • python manage.py  (查看命令列表)


2.模型介绍


2.1什么是Model模型


Model (模型) 简而言之即数据模型。模型不是数据本身(比如数据库里的数据),而是抽象的描述数据的构成和逻辑关系。每个Django model实际上是个类,继承自models.Model。每个Model应该包括属性关系(比如单对单,单对多和多对多)和方法。当你定义好Model模型后,Django的接口会自动帮你在数据库生成相应的数据表(table)。这样你就不用自己用SQL语言创建表格或在数据库里操作创建表格了,是不是很省心?

2.2什么是ORM


ORM是"对象-关系-映射"的简称:  

  • O 是object,也就类对象的意思
  • R 是relation,也就是关系数据库中数据表的意思
  • M 是mapping,是映射的意思


主要完成以下任务:

  • 根据对象类型生成表结构
  • 将对象、列表的操作,转换成SQL语句
  • 将SQL查询到的结果转换为对象、列表


2.3定义模型类常用的属性


2.3.1字段类型


image.png



2.3.2字段选项


image.png


2.3.3 关系字段类型


image.png


2.4Django数据库开发步骤


  • 在models.py文件中定义模型类
  • 迁移
  • 通过类和对象完成数据增删改查操作

2.5模型设计示例


本示例完成“图书-英雄”信息的维护,需要存储两种数据:图书、英雄

2.5.1图书表结构设计


  • 数据库表名称(类名称):BookInfo
  • 图书名称:btitle
  • 图书发布日期:bpub_date

2.5.2英雄表结构设计


  • 数据库表名称(类名称):HeroInfo
  • 英雄姓名:hname
  • 英雄性别:hgender
  • 英雄介绍:hcontent
  • 所属图书:hbook

图书和英雄的关系为一对多


2.5.3数据库配置


  • 在settings.py文件里,通过DATABASES项进行数据库配置
  • Django支持的数据库包括sqlite、mysql等
  • Django默认使用的是sqlite数据库

2.6创建应用


在一个项目里可以创建多个应用,每个应用进行一种业务处理

image.png


2.7定义模型类


image.png


2.8生成数据


2.8.1激活模型


编辑settings.py,将booktest应用加入到install_apps中

image.png


2.8.2 生成迁移文件


生成迁移文件:根据模型类生成sql语句。迁移文件被生成到应用的migrations目录。

image.png


2.8.3执行迁移


执行sql语句生成数据表

image.png


2.9数据测试


进入python manage.py shell,进行简单的模型练习


2.9.1导入依赖包


image.png


2.9.2查询所有图书信息


image.png


2.9.3新建图书馆信息


image.png


2.9.4查找图书


image.png


2.9.5输出图书信息


image.png


2.9.6修改图书信息


image.png


2.9.7删除图书信息


image.png


2.10关联对象


对于HeroInfo可以按照上面的操作方式进行,注意添加关联对象


2.10.1添加关联对象


image.png


2.10.2获得关联集合


返回当前book对象的所有hero

image.png


3.管理站点


3.1站点操作


3.1.1 什么是站点管理


  • 站点分为内容发布公共访问两部分
  • 内容发布的部分负责添加修改删除内容,开发这些重复的功能是一件单调乏味、缺乏创造力的工作。因此,DJango会根据定义的模型类完全自动地生成管理模块


3.1.2站点管理特性


  • 读取模型中的元数据,然后提供给你一个强大而且可以使用的界面,网站管理者可以用它立即工作
  • django的管理工具被称作 django.contrib.admin

3.2使用Django管理


3.2.1创建管理员


image.png


3.2.2启动Django服务


3.2.3进入管理站点


  • 默认可以对groups、users进行管理


3.3管理界面化


  • 本地化是将显示的语言、时间等使用本地的习惯,这里的本地化就是进行中国化,中国大陆地区使用简体中文,时区使用亚洲/上海时区,注意这里不使用北京时区表示。


编辑settings.py文件,设置编码、时区

image.png


3.4管理站点注册模型


3.4.1注册模型


打开booktest/admin.py文件,注册模型

image.png


3.4.2修改数据


刷新管理页面,可以对BookInfo的数据进行增删改查操作


3.4.3问题及解决方案


如果在str方法中返回中文,在修改和添加的会报ascii的错误。解决方案:在str()方法中,将字符串末尾添加".encoding(utf-8)"(此问题针对python2.x版本)

3.5自定义管理页面


3.5.1 admin.ModelAdmin类


Django提供了admin.ModelAdmin类


3.5.2显示方式


通过定义ModelAdmin的子类,来定义模型在Admin界面的显示方式

image.png


3.5.3列表页属性


  • list_display: 显示字段,可以点击列头进行排序
    list_display['pk', 'btitle', 'bpub_date']
  • list_filter: 过滤字段,过滤框会出现在右侧
    list_filter = ['btitle']
  • search_fields: 搜索字段,搜索框会出现在上测
    search_fields = ['btitle']
  • list_per_page: 分页,分页框会出现在下册

3.5.4修改、添加页属性


  • fields: 属性的先后顺序

  image.png

  • fieldsets: 属性分组

  元组第一个参数,分组的名字;第二个参数,存放哪些字段

  image.png


3.5.5关联对象


对于HeroInfo模型类,有两种注册方式

  • 方式一:与BookInfo模型类相同
  • 方式二:关联注册

关联注册(在admin.py文件里)

image.png

目录
相关文章
|
3月前
|
监控 安全 应用服务中间件
python中Django入门(四)
python中Django入门(四)
41 0
|
3月前
|
Python API 网络架构
Django实践-10RESTful架构和DRF入门
Django实践-10RESTful架构和DRF入门
Django实践-10RESTful架构和DRF入门
|
20天前
|
测试技术 API 数据库
Django测试入门:打造坚实代码基础的钥匙
Django测试入门:打造坚实代码基础的钥匙
31 3
|
10天前
|
前端开发 网络协议 物联网
Django Web:搭建Websocket服务器(入门篇)
Django Web:搭建Websocket服务器(入门篇)
21 1
|
2月前
|
数据库 开发者 Python
Django ORM入门指南:从概念到实践,掌握模型创建、迁移与视图操作
Django ORM入门指南:从概念到实践,掌握模型创建、迁移与视图操作
|
2月前
|
前端开发 数据库 Python
Django入门全攻略:从零搭建你的第一个Web项目
Django入门全攻略:从零搭建你的第一个Web项目
|
3月前
|
开发框架 中间件 数据库
Django 框架入门全攻略:轻松构建 Web 应用
【5月更文挑战第18天】本文是 Django 入门教程,介绍了如何使用 Django 构建 Web 应用。内容包括安装、项目与应用创建、模型定义、数据库迁移、视图编写、路由配置、模板系统、表单处理和中间件的使用。通过实例展示了 Django 基本流程,帮助初学者快速上手。Django 提供高效工具,便于开发者聚焦业务逻辑,轻松构建功能丰富的 Web 应用。
56 5
|
3月前
|
测试技术 数据库 开发者
Django自动化测试入门:单元测试与集成测试
【4月更文挑战第15天】本文介绍了Django的自动化测试,包括单元测试和集成测试。单元测试专注于单个视图、模型等组件的正确性,而集成测试则测试组件间的交互。Django测试框架提供`TestCase`和`Client`进行单元和集成测试。通过编写测试,开发者能确保代码质量、稳定性和应用的正确协同工作。运行测试使用`python manage.py test`命令,建议将其纳入日常开发流程。
|
3月前
|
XML JSON 前端开发
Django视图函数技巧,从入门到实战
Django视图函数技巧,从入门到实战
|
9月前
|
Python
05 Django入门 - 视图(介绍)
05 Django入门 - 视图(介绍)
36 0