Django核心

安装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.hqwc.cn/news/9753.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Fortran 中的函数与子程序

Fortran 中的函数与子程序 简介 Fortran 是不区分大小写的函数(Function): 函数是一段具有输入和输出的代码块,它接受一些输入参数,经过一系列计算后返回一个结果。 在Fortran中,函数的定义以关键字"…

LVS-DR负载群集的优势和部署实例

目录 一、DR模式数据包流向分析 二、DR模式的特点 三、DR模式中需要解决的问题 四、LVS-DR部署实例 1.配置NFS共享存储器 2.配置节点web服务(两台的配置相同) 3.配置LVS负载调度器 一、DR模式数据包流向分析 1.Client 客户端发送请求到 Director …

伪类元素content,icon变形倾斜问题

![在这里插入图片描述](https://img-blog.csdnimg.cn/b58d128a80fd4a069a5e47cf2e87e256.png 检查发现原本设置了一个 font-style 为 italic,为倾斜样式 解决办法: font-style: normal;

亿级日活业务稳如磐石 华为云发布性能测试服务CodeArts PerfTest

HDC期间可参与华为云PaaS生态抽奖活动,活动链接在文末 计算机软件作为人类逻辑智慧的伟大结晶之一,已经渗透到了人类社会的各个角落。早期的计算机发展对硬件有很强的依赖性,只有少数的个人或者机构才能拥有软件这种“奢侈品”。但随着软件行…

蓝桥杯专题-试题版含答案-【字母统计】【计算球体积】【16进制的简单运算】【C小加随机数】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 👉关于作者 专注于Android/Unity和各种游…

阿里云直播配置

一、开通阿里云直播 首先进入阿里云直播产品主页:https://www.aliyun.com/product/live 。 点击下方的“立即开通”。 如果是还未注册的用户请按照页面提示进行完成注册并实名认证。 2、首次进入会提示开通服务,点击“开通服务”,然后选择计…

【现场问题】flink-cdc,sql一直校验不通过,为什么,明明sql没有错误

flink-cdc 问题展示问题解决校验结果 问题展示 这里的flink-cdc的sql对了好几遍,都没问题,包括单个执行create,也是显示校验通过 如图: 但是多个一起就报错了: java.lang.IllegalArgumentException: only single state…

华为HCIP第一天---------RSTP

一、介绍 1、以太网交换网络中为了进行链路备份,提高网络可靠性,通常会使用冗余链路,但是这也带来了网络环路的问题。网络环路会引发广播风暴和MAC地址表震荡等问题,导致用户通信质量差,甚至通信中断。为了解决交换网…

游戏出海长期向好趋势未改,茄子科技助力企业把握出海机遇

在中国游戏出海成为更多企业的必选题之时,如何把握出海机遇,在激烈竞争中实现增长,成为中国游戏厂商的着力点。秉承着红海将至的市场发展背景,出海全球化、本地化的战略已经成为企业大势所趋,越来越多的游戏厂商开始挑…

【操作系统】c语言--使用信号量解决生产者和消费者问题

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

驱动开发作业2 —— ioctl

通过ioctl函数选择不同硬件的控制&#xff0c;如实现对LED、蜂鸣器、马达、风扇的控制 1.将GPIO的相关寄存器封装成结构体 --------> gpio.h 2.LED相关驱动文件 --------> led.c 3.蜂鸣器相关驱动文件 --------> beep.c 4.风扇相关驱动文件 --------> fan.c 5.马…

Spring 与 Servlet-2

学习笔记&#xff08;加油呀&#xff09;&#xff1a; Spring的通知类型 Spring 通知类型按切面功能调用的不同时刻&#xff0c;可以分为提供了 5 种 Advice 类型 1、前置通知 Before advice&#xff1a;在某连接点之前执行的通知&#xff0c;但这个通知不能阻止连接点之前的…