Django核心

news2024/11/27 18:38:36

安装django

pip install django 
# pip install django==3.1.6

创建django项目

在一个项目中可以包含多个应用程序。

django-admin startapp app_name  #创建一个应用程序
django-admin startproject project_name #创建一个项目

运行django项目

python manage.py runserver 8000

MTV模式

Models:数据库管理员(非必须)
Templates:模板引擎(非必须)
Views:接口引擎
浏览器输入地址——> urls.py ——> view ——> model ——> 数据库 ——> views ——> templates ——> response(字节码bytes)——> 浏览器
在这里插入图片描述

请求与响应

request ——> urls(path)
response ——> views(HttpResponse, TemplateResponse, JsonResponse )

路由分层

就是 urls.py 之间规则

数据库迁移命令

python manage.py makemigrations
python manage.py migrate

这两个命令是 Django 中用于数据库迁移的命令。

python manage.py makemigrations 命令用于生成数据库迁移文件。迁移文件是 Django 中的一种特殊文件,它记录了对模型的更改,例如创建新表、添加字段、修改字段等。通过运行该命令,Django会检测您对模型的更改,并生成相应的迁移文件,以便在数据库中应用这些更改。

python manage.py migrate 命令用于将数据库迁移应用到实际的数据库中。在运行该命令时,Django会查找尚未应用的迁移文件,并将其应用到数据库中,以确保数据库结构与模型定义保持同步。

通常情况下,当您对模型进行更改后,需要运行 makemigrations 命令生成迁移文件,然后再运行 migrate 命令将这些更改应用到数据库中。这样可以保持数据库的一致性,并确保模型的更改在数据库中得到正确地反映。

需要注意的是,执行迁移操作前,请确保您已正确配置了数据库连接信息,并且数据库已正确创建。此外,如果您的模型有关联关系(如外键、多对多关系等),Django 还会自动生成相应的迁移文件来处理这些关联关系。

模板语言进阶

Django 的模板语言是一种简单而强大的模板系统,用于在 Django 的视图中生成动态的 HTML、XML、JSON 等内容。以下是 Django 模板语言的主要特点和语法:

  • 插值:使用双大括号({{}})将变量插入到模板中,例如 {{ variable }}。
  • 过滤器:可以使用过滤器对变量进行处理和转换,例如 {{ variable|filter }}。过滤器可以通过管道(|)进行串联。
  • 标签:使用单大括号和百分号({% %})包围的内容,用于执行控制逻辑、循环、条件判断等操作。例如 {% if condition %} … {% endif %}。
  • 注释:使用 {# #} 包围的内容,用于添加注释,这些注释在渲染模板时会被忽略。
  • 循环:使用 {% for item in list %} … {% endfor %} 进行循环迭代,可以遍历列表、字典等可迭代对象。
  • 条件判断:使用 {% if condition %} … {% elif condition %} … {% else %} … {% endif %} 进行条件判断。
  • 继承和块:可以使用 {% extends ‘base.html’ %} 定义模板继承关系,并使用 {% block content %} … {% endblock %} 在父模板中定义可替换的块。
  • URL 反向解析:使用 {% url ‘view-name’ arg1 arg2 %} 可以根据视图名称和参数生成相应的 URL。
  • 静态文件:使用 {% static ‘path/to/file’ %} 可以生成静态文件的 URL。

Django 模板语言提供了丰富的功能和语法,可以使模板与视图逻辑相分离,提高代码的可维护性和重用性。它允许在模板中动态地插入变量、执行控制逻辑和循环,使开发人员能够轻松地生成动态的内容和交互式的用户界面。

Model 之 Instance 与 QuerySet

  • 数据库
    仓库

  • Model
    仓库设计图
    Field:CharField、IntegerField、FloatFiled、DateTimeField、ForeignKey、OneToOneField、ManyToManyField…
    Field参数:max_length、choices、default、null、blank…

  • Instance
    货物
    常用方法:save()、get()、delete()…

  • QuerySet(查询集)
    包裹(可以有0-N个Instance)
    类似列表的对象(可索引,切片,in(instance in queryset))
    常用方法:filter()、get()、all()、delete()、update()、create()、bulk_create()、order_by()…

  • 举个例子:
    Model的定义:

    class Person(models.Model):
        GENDER_CHOICES = (
            (1, '男'),
            (0, '女')
        )
    
        name = models.CharField(max_length=255)
        age = models.PositiveIntegerField()
        gender = models.BooleanField(choices=GENDER_CHOICES) # item.gender 显示的是 True 或者 False, item.get_gender_display 显示的是 男 或者 女
        id_card = models.CharField(max_length=18)
        address = models.CharField(max_length=255)
        temperature = models.FloatField()
    
        '''
        class Meta可以用于指定一些与模型类相关的配置选项,例如数据库表名、排序方式、权限等。
        '''
        class Meta:
            permissions = ()
    

    QuerySet 和 Instance 的操作(可以通过 python manage.py shell 方便的测试)

    from second_app.models import Person
    p = Person(name="张三", age=20, gender=1, id_card="123123123123333333", address='成都市成华区', temperature=38.5) # 得到的是一个 instance
    p.save()
    ps = Person.objects.fileter() # 返回的一个 QuerySet
    ps.count()
    p = Person.objects.get(id=1)  # 返回的是一个 instance
    p.age = 30
    p.refresh_from_db()
    p.age = 30
    p.save()
    p.refresh_from_db()
    ps = Person.objects.filter(id=1) # 返回的一个 QuerySet
    ps.update(age=22)
    ps[0]
    ps[0].age
    ps.delete()
    ps = Person.objects.filter()
    

Django命令行

python manage.py shell

python manage.py shell 是 Django 提供的专用命令行工具,用于与 Django 项目进行交互,可以方便地访问项目资源、进行数据库操作和快速开发调试。而默认的 Python Shell 只是 Python 解释器的交互式环境,没有加载 Django 项目的配置和上下文,无法直接访问项目中的资源和数据库。

  • Django 环境加载:python manage.py shell 在启动时会加载 Django 项目的配置和应用,确保在交互式环境中可以直接访问项目中定义的模型、视图、管理器等。

  • 方便的数据库访问:python manage.py shell 会自动为你配置好数据库连接,可以直接通过模型类进行数据库操作,而不需要手动设置数据库连接。

  • 项目上下文加载:python manage.py shell 会加载项目的上下文,包括项目的设置、应用配置等信息,使得在交互式环境中可以方便地访问和操作项目相关的资源。

  • 快速开发和调试:python manage.py shell 方便开发人员进行快速的代码测试、调试和验证,可以直接执行和测试 Django 项目中的代码逻辑。

Model 与 Form 与 ModelForm

Model:Model是面向数据库的
Form:Form是面向前端的
ModelForm:与Model有关,与前端也有关

前后端不分离之五大视图

动作视图名是否需要Model是否需要Form
CreateView
DeleteView
UpdateView
ListView, DetailView

ListView

CreateView

DetailView

UpdateView

DeleteView

前后端分离之常用视图

View

APIView

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/720093.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

REST风格讲解

1.REST风格简介 优点:隐藏资源访问的行为,无法通过地址得知对资源的操作,并且简化了书写 rest风格大概将请求方式分成了Get Post Put Delete四种操作方法。上述行为是约定的方式并不是规范。 RequestMapping注解里面value值存储访问的路…

Docker 中的 .NET 异常了怎么抓 Dump (转载)

一、背景 1. 讲故事 有很多朋友跟我说,在 Windows 上看过你文章知道了怎么抓 Crash, CPU爆高,内存暴涨 等各种Dump,为什么你没有写在 Docker 中如何抓的相关文章呢?瞧不上吗? 哈哈,在DUMP的分析旅程中&a…

【前端学JAVA】基础语法

作为一个前端程序员,其发展前途是远不及后端程序员的。因此,只有了解后端,才能让自己更加具备核心竞争力。本系列教程将以一个前端程序员的角度快速学习JAVA。 新建项目 开发JAVA程序,我们第一步是使用IDEA新建一个项目&#xf…

紫光展锐携手中国联通共建数字世界

6月28日,2023上海世界移动大会(MWC上海)首日,联通华盛总经理李立新、联通华盛副总经理陈丰伟一行莅临紫光展锐展台参观,紫光集团高级副总裁、紫光展锐CEO任奇伟博士,紫光展锐执行副总裁、工业电子事业部总经…

如何提高OAK相机在树莓派和JETSON上的运行帧率?

编辑:OAK中国 首发:oakchina.cn 喜欢的话,请多多👍⭐️✍ 内容可能会不定期更新,官网内容都是最新的,请查看首发地址链接。 Hello,大家好,这里是OAK中国,我是助手君。 最…

Lim接口测试平台-接口测试功能详解

一、接口测试 项目地址:Gitee/Github 接口测试模块是整个Lim平台的核心,左侧是接口的模块树,右侧顶部是用例操作功能区,列表展示接口用例信息: 文章目录 一、接口测试 二、维护接口用例 各步骤类型详解 1&#x…

picard的安装

最近在通过GATK所介绍的best practice流程来call SNP流程 1.流程 1.1 BWA比对,获得sam文件 1.2 准备用picard来压缩排序sam文件为bam文件,并对bam文件进行去重复(duplicates marking) 这是就需要用到picard软件 按照教程网页上…

Mac使用Puppeteer,并启动chromium

Mac使用Puppeteer,并启动chromium Puppeteer官网 chromium下载地址 通过chrome://version 可查询 Chromium 浏览器信息 const puppeteer require(puppeteer);(async () > {const browser await puppeteer.launch({executablePath: 上图可执行文件路径,headl…

爬取12306上所有城市的站台信息

0. 需求 爬取所有城市下的站台信息保存到Excel中: 效果: 1. 定位数据源 在12306随便一个车票查询页面上,通过F12控制台获取网站请求车站数据的URL 博主当前获取的URL为: https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version1.9270*注意…

服务器数据恢复-raid10重建为raid6的数据恢复案例

服务器故障: 一台IBM V7000存储中的vdisk丢失,Solaris操作系统中的部署的Oracle数据库不可用。经过和工作人员的沟通得知故障原因:工作人员进行重建MDisk的操作,将原先的raid10重建为raid6,然后又再次重建为raid10&…

RLHF文本生成图模型

背景 语言大模型有RLHF技术点,是否图生成也需要RLHF。要回答这个问题其实首先需要回答的问题有三个: 1.RLHF到底是个什么技术 2.为什么需要用RLHF技术,在语言大模型用RLHF模型解决什么问题点 3.图在什么情况下需要用到RLHF技术点 RLHF技…

如何实现监听某些数值,异步页面请求后再渲染到页面上

问题: 当我们遇到小程序在某个页面,需要刷新另一个页面的数据时,通常都是返回到刷新页面,然后执行onshow的函数。 但是是否可以拿数值之后,直接就更新相应的数值就行了?不用整体刷新。或者有时候页面已经…

7.3.4 【Linux】文件系统检验

xfs_repair 处理 XFS 文件系统 xfs_repair 可以检查/修复文件系统,不过,因为修复文件系统是个很庞大的任务!因此,修复时该文件系统不能被挂载。 fsck.ext4 处理 EXT4 文件系统 fsck 是个综合指令,如果是针对 ext4 的…

“软件源 xxx 的选项 Signed-By 中含有互相冲突的值 xxx“解决方法

问题: 解决方法: 删除目录“/etc/apt/sources.list.d”下的所有文件。(至于为什么,我也不知道) 参考文章: Ubuntu18.04 安装Docker 报错:Signed-By 中含有互相冲突的值_Wynne然然不乖的博客-CS…

基于Springboot+Vue的房屋中介系统(源代码+数据库+14000字论文)064

基于SpringbootVue的房屋中介系统(源代码数据库14000字论文)064 一、系统介绍 本项目前后端分离 本系统分为管理员、用户、中介经纪人三种角色 用户角色包含以下功能: 登录、注册、个人信息修改、密码修改、房屋查看、经纪人联系 中介经纪人角色包含以下功能&…

开拓全球市场:国内企业如何通过TikTok直播开创品牌新篇章

在当今全球化的商业环境中,许多国内企业渴望将自己的品牌推向海外市场。然而,进军海外市场并不容易,尤其是对于那些缺乏国际推广经验的品牌来说。然而,随着社交媒体的兴起,一种新的推广方式正在引起关注,那…

软件测试方法

软件测试是在软件投入生产性运行之前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量控制的关键步骤。 软件开发过程是一个自顶向下、逐步细化的过程,而测试过程则是依相反的顺序安排的自底向上、逐步集成的过程。 一、白盒测试…

【工厂模式与抽象工厂】—— 每天一点小知识

💧 工厂模式与抽象工厂 \color{#FF1493}{工厂模式与抽象工厂} 工厂模式与抽象工厂💧 🌷 仰望天空,妳我亦是行人.✨ 🦄 个人主页——微风撞见云的博客🎐 🐳 《数据结构与算法》专栏的文…

数据库|TiDB多副本损坏,别着急!有损恢复帮你化险为夷!

高文锋 |后端开发工程师 目录 一、前言 二、TiDB数据库的存储架构 三、集群信息 (一)Store情况 (二)测试表db 1.sbtest 1的region分布情况 (三)模拟tikv出现故障 (四)有损不…

vue【过滤器】

目录 1:过滤器的基本语法 1.1:示例代码 1.2:注意事项 2:使用Vue.filter定义全局过滤器 2.1:私有过滤器 2.2:全局过滤器 3:使用全局过滤器格式化时间 3.1:处理如图的时间 3.…