动静态网页、Django创建表关系、Django框架的请求生命周期流程图

这篇具有很好参考价值的文章主要介绍了动静态网页、Django创建表关系、Django框架的请求生命周期流程图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、request对象的几个方法

在视图函数中写方法的时候,都会有一个形参request

def index(request):
    pass

request.method  # GET POST
request.GET.get() # 它获取最后一个元素值
request.GET.getlist() # 获取到所有的

request.POST.get() # 它获取最后一个元素值
request.POST.getlist() # 获取到所有的

def index(request):
    if request.method == 'POST':
        # 在这里处理post请求的逻辑
        return 
    return render(request, 'index.html')

二、django连接MySQL

# 在配置文件中找到DATABASE
# 改连接MySQL数据库的参数
NAME
HOST
PORT
USER
PASSWORD
CHARSET

# 接下来就启动框架,这个时候会报错
# 解决报错信息
解释器3.6
	# 在任意的_init__.py文件中,写入两句话
    import pymysql
    pymysql.install_as_mysqldb()

解释器3.8
	# 改源码
    

三、Django中的ORM

orm:对象映射模型
    # 通过写python代码来操作SQL语句,它的好处就是不用在写复杂的SQL语句了,其实以后越复杂的SQL语句写ORM越麻烦,有些时候可能ORM还写不出来,那怎么办,就在django中写原生SQL语句
    # 它的弊端就是封装的程度较高, 它的执行效率相对会低一些
# 它的原理就是链式表达式:通过一个对象可以一直点出来对象里面的很多方法

# 概念
表名:类名

记录:对象

字段:属性

# 在哪里写数据库相关的:models.py
class User(models.Model):
    id = models.AutoField(priamry_key=True)
    
    
# 写完之后一定要执行数据库迁移命令
python manage.py makemigrations
python manage.py migrate

四、通过结合前端页面实现ORM对数据的增删改查

写一个页面,就是把数据库中的数据以表格的形式展示出来,然后在每一行的后面加两个按钮,
分别是修改、删除的按钮

# 表格的展示页面

'''思考修改功能的逻辑:'''
1、 确定修改哪条记录,怎么确定?  通过主键id确定唯一一条记录
2、点击修改的按钮,应该跳转到一个修改的页面
3、应该通过id查询到原来的数据,并且把这个记录的数据展示到修改的页面
4、开始修改,提交到后端的修改数据的方法中

'''删除功能的逻辑:'''
1、确定删除哪条记录,怎么确定?  通过主键id确定唯一一条记录
2、点击删除的按钮,请求到后端的删除地址
3、后端拿到id直接做删除操作、跳转到列表页面

五、动静态网页

静态网页
	在页面上写死的数据,一直不会改变的都是静态网页

动态网页
	动态网页是从后端获取到的数据在页面展示
    数据是从数据库中查询出来的也是动态网页

六、Django创建表关系

"""
一对一
一对多
多对多
"""

我们以图书表、出版社表、作者表、作者详情表为例创建

# 判断表关系:换位思考法
分析表关系:
	图书表和出版社表是一对多的关系    >>> 外键如何创建:外键字段建在多的一方
    图书表和作者表是多对多的关系      >>>  外键如何创建:外键字段建在第三张表中
    """
    	创建多对多的方式有3种方式,先将一种
    	
    """
    作者表和作者详情是一对一的关系	   >>>  外键如何创建:外键字段建在查询频率较高的一方
    
# 创建表关系字段先创建表的基础字段,先创建没有的外键的,最后在写外键字段

class Book(models.Model):
    title = models.CharField(max_length=64)
    """
    max_digits=None,        总共多少位
    decimal_places=None     小数占几位
    """
    # price decimal(8,2)
    price = models.DecimalField(max_digits=8, decimal_places=2)
    # publish_id = models.ForeignKey(to='Publish', to_field='id') # 创建外键的
    """如果你的字段是主键字段,那么,你就不用在字段的后面拼接_id了,它会自定的拼接_id"""
    publish = models.ForeignKey(to='Publish')  # 创建外键的 默认就是跟表的主键字段建立关系
    """
        authors:它是一个虚拟字段,意思是,在book表中不会实际创建出来这个字段,它能够创建出来第三张表(自动)
    """
    authors = models.ManyToManyField(to='Author', )


class Publish(models.Model):
    title = models.CharField(max_length=64)
    addr = models.CharField(max_length=64)


class Author(models.Model):
    name = models.CharField(max_length=64)
    author_detail = models.OneToOneField(to='AuthorDetail')
    
    
注意:
1.django1版本
on_delete
当删除关联表中的数据时,当前表与其关联的行的行为。

models.CASCADE
删除关联数据,与之关联也删除

models.DO_NOTHING
删除关联数据,引发错误IntegrityError

models.PROTECT
删除关联数据,引发错误ProtectedError

models.SET_NULL
删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空)

models.SET_DEFAULT
删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值)

models.SET
删除关联数据,
a. 与之关联的值设置为指定值,设置:models.SET()
b. 与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象)


2. django2
class Book(models.Model):
    title = models.CharField(max_length=64)
    """
    max_digits=None,        总共多少位
    decimal_places=None     小数占几位
    """
    # price decimal(8,2)
    price = models.DecimalField(max_digits=8, decimal_places=2)
    # publish_id = models.ForeignKey(to='Publish', to_field='id') # 创建外键的
    """如果你的字段是主键字段,那么,你就不用在字段的后面拼接_id了,它会自定的拼接_id"""
    publish = models.ForeignKey(to='Publish', on_delete=models.CASCADE)  # 创建外键的 默认就是跟表的主键字段建立关系
    """
        authors:它是一个虚拟字段,意思是,在book表中不会实际创建出来这个字段,它能够创建出来第三张表(自动)
    """
    authors = models.ManyToManyField(to='Author', )


class Publish(models.Model):
    title = models.CharField(max_length=64)
    addr = models.CharField(max_length=64)


class Author(models.Model):
    name = models.CharField(max_length=64)
    author_detail = models.OneToOneField(to='AuthorDetail',on_delete=models.CASCADE)


class AuthorDetail(models.Model):
    phone = models.CharField(max_length=64)
    qq = models.CharField(max_length=64)

七、Django框架的请求生命周期流程图

动静态网页、Django创建表关系、Django框架的请求生命周期流程图,django,python01,django,流程图,python文章来源地址https://www.toymoban.com/news/detail-614691.html

到了这里,关于动静态网页、Django创建表关系、Django框架的请求生命周期流程图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • @PostConstruct和@PreDestroy与servlet生命周期的关系

      在 Servlet 的生命周期中, init()  和  destroy()  方法的作用分别是: init() : 此方法在 Servlet 实例化后立即调用,用于执行一次性的初始化工作(例如,打开数据库连接、初始化配置设置等)。Servlet 容器在部署后首次接收到对该 Servlet 的请求时,或者服务器启动时,会创建

    2024年02月16日
    浏览(27)
  • Flask 请求的生命周期

    Flask 请求的生命周期涉及到整个处理请求的过程,包括请求的接收、视图函数的执行、响应的生成和发送等。以下是一个简要的 Flask 请求生命周期的概述: WSGI 服务器调用 Flask 对象,该对象调用 Flask.wsgi_app() 。 一个 RequestContext 对象被创建,将 WSGI environ 字典转换为一个 Re

    2024年02月04日
    浏览(22)
  • Tomcat 一次请求的生命周期

    在使用 Tomcat 的时候,我们只需要在 Servlet 实现类中写我们的业务逻辑代码即可,不需要管 Socket 连接、协议处理要怎么实现,因为这部分作为不经常变动的部分,被封装到了 Tomcat 中,程序员只需要引入 Tomcat 中即可,这也是面向对象编程的经典实践。 那么 Tomcat 中的一次请

    2024年02月12日
    浏览(32)
  • Vue2和Vue3生命周期映射关系及异同

    beforeCreate - 使用 setup() created - 使用 use setup() beforeMount -onBeforeMount mounted - onMounted beforeUpdate - onBeforeUpdate updated - onUpdated beforeDestroy- onBeforeUnmount destroyed -onUnmounted activated - onActivated deactivated - onDeactivated errorCaptured - onErrorCaptured beforeCreate - 使用 setup() 函数替代 Vue 2 中的 beforeCrea

    2024年01月24日
    浏览(34)
  • 从零开始的Django框架入门到实战教程(内含实战实例) - 01 创建项目与app、加入静态文件、模板语法介绍(学习笔记)

      Django是目前比较火爆的框架,之前有在知乎刷到,很多毕业生进入大厂实习后因为不会git和Django框架3天就被踢掉了,因为他们很难把自己的工作融入到整个组的工作中。因此,我尝试自学Django并整理出如下笔记。   在这部分,我将从Django的安装讲起,从创建项目到制

    2024年02月09日
    浏览(50)
  • Docker 容器生命周期:创建、启动、暂停与停止

    🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐 🌊 《100天精通Golang(基础入门篇)》学会Golang语言

    2024年02月14日
    浏览(29)
  • 探索Java中的静态变量与实例变量:存储区域、生命周期以及内存分配方式的区别

    🎉欢迎来到Java面试技巧专栏~探索Java中的静态变量与实例变量 ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹 ✨博客主页:IT·陈寒的博客 🎈该系列文章专栏:Java面试技巧 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏 📜 欢迎大家关注! ❤️ 在Java中,静态变量

    2024年02月12日
    浏览(23)
  • spring框架-概述(spring特性、生命周期)(一)

    Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器 ,是为了解决企业级编程开发中的复杂性,实现敏捷开发的应用型框架 IOC: (Inverse of Control ):一种思想 (容器帮我们创建对象并且管理和控制 ) 反转后不再由自己

    2024年02月10日
    浏览(27)
  • 前端三大框架的生命周期最底层原理解析

    在现代前端开发中,React、Angular和Vue.js等三大框架已经成为了行业中最受欢迎和广泛使用的工具。这些框架的核心功能之一是生命周期管理,通过生命周期方法,我们可以在这些关键点执行特定的操作,以实现更好的控制和管理前端应用程序的行为。然而,你是否好奇这些生

    2024年02月13日
    浏览(39)
  • 小程序框架及小程序生命周期----超详细

    小程序开发框架的目标是通过尽可能简单、高效的方式让开发者可以在微信中开发具有原生 APP 体验的服务 整个小程序框架系统分为两部分:逻辑层(App Service)和 视图层(View)。小程序提供了自己的视图层描述语言 WXML 和 WXSS ,以及基于 JavaScript 的逻辑层框架,并在视图层

    2024年02月06日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包