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

目录
相关文章
|
9天前
|
Java API 数据库
Django:从入门到精通
【11月更文挑战第18天】Django是一个由Python编写的高级Web应用框架,以其简洁性、安全性和高效性而闻名。Django最初由Adrian Holovaty和Simon Willison于2003年开发,旨在简化Web应用的开发过程。作为一个开放源代码项目,Django迅速吸引了大量的开发者和用户,成为了Python Web开发领域的重要工具之一。
23 1
|
1月前
|
存储 Shell 数据库
Python编程--Django入门:用户账户(二)
Python编程--Django入门:用户账户(二)
|
1月前
|
存储 数据库 Python
Python编程--Django入门:用户账户(一)
Python编程--Django入门:用户账户(一)
|
3月前
|
前端开发 关系型数据库 Python
Django入门到放弃之分页器
Django入门到放弃之分页器
|
3月前
|
数据库 开发者 Java
颠覆传统开发:Hibernate与Spring Boot的集成,让你的开发效率飞跃式提升!
【8月更文挑战第31天】在 Java 开发中,Spring Boot 和 Hibernate 已成为许多开发者的首选技术栈。Spring Boot 简化了配置和部署过程,而 Hibernate 则是一个强大的 ORM 框架,用于管理数据库交互。将两者结合使用,可以极大提升开发效率并构建高性能的现代 Java 应用。本文将通过代码示例展示如何在 Spring Boot 项目中集成 Hibernate,并实现基本的数据库操作,包括添加依赖、配置数据源、创建实体类和仓库接口,以及在服务层和控制器中处理 HTTP 请求。这种组合不仅简化了配置,还提供了一套强大的工具来快速开发现代 Java 应用程序。
202 0
|
3月前
|
开发框架 安全 数据库
解锁Django框架神秘面纱!从入门到实战,掌握这些技巧,让你的Web应用秒变高效神器!
【8月更文挑战第31天】Django 是 Python 的明星 Web 开发框架,以其高效、安全及可扩展性著称,适用于构建各类 Web 应用。本文从 Django 基础概念出发,介绍其 MTV 架构,涵盖模型(Model)、模板(Template)、视图(View)等核心组件,并通过示例代码展示实际应用。此外,还将探讨路由配置、管理界面及实战技巧,帮助读者全面掌握 Django,为高效 Web 开发打下坚实基础。
54 0
|
3月前
|
关系型数据库 MySQL 机器人
Django入门到放弃之数据库配置
Django入门到放弃之数据库配置
|
3月前
|
缓存 中间件 数据库
Django入门到放弃之缓存及信号机制
Django入门到放弃之缓存及信号机制
|
3月前
|
前端开发 数据库 数据安全/隐私保护
Django入门到放弃之Auth模块
Django入门到放弃之Auth模块
|
3月前
|
JSON 前端开发 数据安全/隐私保护
Django入门到放弃之CSRF_TOKEN
Django入门到放弃之CSRF_TOKEN