【Django】(一)基础知识

news2025/1/15 20:07:08

文章目录

  • 一.安装
  • 二.创建项目
  • 三.项目介绍
  • 四.APP的创建
  • 五.小案例
  • 六 模板和静态文件
    • 模板
    • 静态文件
  • 7.模板语法
    • 7.1 变量
    • 7.2列表
    • 7.3 字典
    • 7.4 过滤器
    • 7.5 if/else
    • 7.6 for标签
    • 7.7 ifequal和ifnotequal
    • 7.8注释
    • 7.9csrf_token
  • 8.模板继承
    • 8.1父模板
    • 8.2 子模板
  • 9.请求和响应
  • 10.数据库
    • 10.1安装第三方模块
    • 10.2 创建数据库
    • 10.3 Django连接数据库
    • 10.4 类创建表
    • 10.5 增删改查

一.安装

pip install djiango

安装完后的库结构。

-Scripts
     ~~~~     -Django-admin.exe
-Lib
     ~~~~     -内置模块
     ~~~~     -site-packages
         ~~~~~~~~         -django
(注意:Django-admin为管理工具)

二.创建项目

在这里插入图片描述

删除一行默认的代码:
在这里插入图片描述

在这里插入图片描述

三.项目介绍

project_django
     ~~~~     - __init__.py
     ~~~~     -asgi.py          ~~~~~~~~         接收网络请求(不需要修改)
     ~~~~     -settings.py          ~~~~~~~~         项目配置
     ~~~~     -urls.py          ~~~~~~~~         url和函数的对应关系
     ~~~~     -wsgi.py          ~~~~~~~~         接收网络请求(不需要修改)
manage.py          ~~~~~~~~         项目的管理,启动,创建APP,数据管理

四.APP的创建

python manage.py startapp app_1

在这里插入图片描述
APP结构:

├─app_1
│  │  admin.py            [固定,不用动]django默认提供了admin后台管理
│  │  apps.py             [固定,不用动]app启动类
│  │  models.py           对数据库进行操作
│  │  tests.py            单元测试
│  │  views.py            函数
│  │  __init__.py
│  │
│  └─migrations           数据库变更记录 
│          __init__.py
│

五.小案例

1.注册APP【settings】
找到这个类
在这里插入图片描述
将这个类的地址写到INSTALLED_APPS

在这里插入图片描述
2.编写url和视图函数的对应关系【urls】
之后,如访问www.xxx.com/index,则转去执行views.index中的函数
在这里插入图片描述

3.编写视图函数【view.py】
在这里插入图片描述
4.启动django
方法一:命令行

python manage.py runserver

方法二:Pycharm启动
在这里插入图片描述
5.浏览器访问
在这里插入图片描述

六 模板和静态文件

模板

在app_1的下面写一个文件名为templates的模块,里面存放html文件
在这里插入图片描述
使用render返回html文件

在这里插入图片描述
在这里插入图片描述

静态文件

静态文件包括 css ,js, 图片等。

在这里插入图片描述

这样就可以引入样式
在这里插入图片描述

在这里插入图片描述
注意特殊语法:

<% load static%>
<link rel="stylesheet" href="{%static'plugins/css'%}"/>

7.模板语法

在这里插入图片描述
视图函数render内部

  • 读取含有模板语法的html
  • 内部进行渲染,模板语法执行并且替换数据
  • 返回渲染后的结果

7.1 变量

view.py:

def test_templates(request):
    my_name = "jack"
    return render(request, "test_templates.html", {"name": my_name})
    
 

html:

<p>name:{{ name }}</p>

在这里插入图片描述

7.2列表

view.py

def test_templates(request):
    my_list = ["jack", "rose"]
    return render(request, "test_templates.html", {"name_list": my_list})

html

<body>
    <div>
        <p>name:{{ name_list }}</p>
    </div>
    <div>
        <p>name2:{{ name_list.0 }}</p>
        <p>name3:{{ name_list.1 }}</p>
    </div>
</body>

在这里插入图片描述

7.3 字典

view.py

def test_templates(request):
    my_dict = {
        "name": "jack",
        "age": "20",
        "height": "178"
        }
    return render(request, "test_templates.html", {"dict": my_dict})

html

<body>
    <div>
        <p>all:{{ dict }}</p>
        <p>name:{{ dict.name }}</p>
        <p>age:{{ dict.age }}</p>
        <p>height:{{ dict.height }}</p>
    </div>
</body>

在这里插入图片描述

7.4 过滤器

模板语法

{{ 变量名 | 过滤器:可选参数 }}

view.py

def test_templates2(request):
    name = "JACK AND ROSE"
    return render(request, "test_templates2.html", {"my_name": name})

html

<body>
    <div>
        <p>{{ my_name }}</p>
        <p>{{ my_name | lower}}</p>
    </div>
</body>

过滤管道可以被* 套接* ,既是说,一个过滤器管道的输出又可以作为下一个管道的输入:

{{ my_list|first|upper }}

  • addslashes : 添加反斜杠到任何反斜杠、单引号或者双引号前面。
  • date:按指定的格式字符串参数格式化 date 或者 datetime 对象
  • lenght:返回变量的长度。字典返回的是键值对的数量,集合返回的是去重后的长度。
  • safe:将字符串标记为安全,不需要转义。
  • default:default 为变量提供一个默认值。
  • 如果 views 传的变量的布尔值是 false,则使用指定的默认值。

    以下值为 false:

    0  0.0  False  0j  ""  []  ()  set()  {}  None
    

    7.5 if/else

    {% if condition %}
         ... display
    {% endif %}
    
    {% if condition1 %}
       ... display 1
    {% elif condition2 %}
       ... display 2
    {% else %}
       ... display 3
    {% endif %}
    

    7.6 for标签

    遍历列表

    {% for i in views_list %}
    {{ i }}
    {% endfor %}
    

    遍历字典

    {% for i,j in views_dict.items %}
    {{ i }}---{{ j }}
    {% endfor %}
    

    在 {% for %} 标签里可以通过 {{forloop}} 变量获取循环序号。

    forloop.counter: 顺序获取循环序号,从 1 开始计算
    forloop.counter0: 顺序获取循环序号,从 0 开始计算
    forloop.revcounter: 倒序获取循环序号,结尾序号为 1
    forloop.revcounter0: 倒序获取循环序号,结尾序号为 0
    forloop.first(一般配合if标签使用): 第一条数据返回 True,其他数据返回 False
    forloop.last(一般配合if标签使用): 最后一条数据返回 True,其他数据返回 False

    7.7 ifequal和ifnotequal

    {% ifequal user currentuser %}
        <h1>Welcome!</h1>
    {% endifequal %}
    

    7.8注释

    {# #}

    7.9csrf_token

    csrf_token 用于form表单中,作用是跨站请求伪造保护。

    8.模板继承

    8.1父模板

    {% block 名称 %} 
    预留给子模板的区域,可以设置设置默认内容
    {% endblock 名称 %}
    

    8.2 子模板

    {% extends "父模板路径"%} 
    
    { % block 名称 % }
    内容 
    {% endblock 名称 %}
    

    9.请求和响应

    10.数据库

    10.1安装第三方模块

    pip install mysqlclient

    10.2 创建数据库

    1.ORM的功能:

    • 创建,修改,删除数据库中的表【无法创建数据库】
    • 对数据库中的表进行操作

    2.启动mysql
    3.创建数据库

     create database django_database DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    

    10.3 Django连接数据库

    在这里插入图片描述

    10.4 类创建表

    在这里插入图片描述
    相当于在数据库中创建表app01_userinfo,即等同于下面代码:

    """
    create table app01_userinfo(
        id bigint auto_increment primary key,
        name varchar(32),
        password varchar(64),
        age int
    )
    """
    

    执行运行命令:

    python manage.py makemigrations
    
    python manage.py migrate
    

    在这里插入图片描述
    在这里插入图片描述

    修改表结构 -----> 直接修改表model.py文件
    如果添加新的字段,没有添加默认值会出现下面情况:
    在这里插入图片描述
    选择1的话,会出现让你输入一个默认值给新的整一列。
    选择2的话,会退出,让你直接修改model.py文件。

    设置默认值

    age = models.IntegerField(default=2)

    允许为空

    age = models.IntegerField(null=True, blank=True)

    10.5 增删改查

    UserInfo.objects.create(name="小明", password="123", age="19", email="xiaoming.gmail.com")
    
    UserInfo.objects.filter(id=4).delete()
    
    UserInfo.objects.all().delete()
    
    UserInfo.objects.filter(id=5).update(email="999999")
    
    data_list = UserInfo.objects.all()
        for item in data_list:
            print(item.name, item.password, item.age, item.email)
    

    作者:Beyong    
    出处:Beyong博客
    github地址:https://github.com/beyong2019

    本博客中未标明转载的文章归作者Beyong有,欢迎转载,但未经作者同意必须保留此段声明,且在文章明显位置给出原文连接,否则保留追究法律责任的权利。

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

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

相关文章

【服务器搭建个人网站】附:接入的服务商 以及 安全评估报告该如何填写?

前言 哈喽&#xff0c;大家好&#xff0c;我是木易巷&#xff01; 关于公安备案的一些详细的细节没有分享出来&#xff0c;在公安备案期间要填写很多东西&#xff0c;其中比较难填写的就是接入的服务商和安全评估报告的填写。 这一篇给大家总结&#xff1a;公安备案接入服务商和…

⭐️【linux】关于linux-gcc,你必须要知道的知识

&#x1f332;&#x1f332;目录&#x1f332;&#x1f332; 1️⃣什么是gcc 2️⃣gcc如何生成可执行文件 3️⃣简单使用gcc 4️⃣linux的库 1️⃣什么是gcc ❄️GCC&#xff08;GNU Compiler Collection&#xff0c;GNU编译器套件&#xff09;&#xff0c;是由 GNU 开发的…

Java 中 Map 集合的基本使用

一、HashMap 1.1 HashMap 基本使用 import java.util.*;/*** author: yunhu* date: 2022/7/14*/ public class Test {public static void main(String[] args) {Map<String, Integer> map new HashMap<>();map.put("Alice", 12);map.put("Bob&qu…

62.Python 类的3要素语法

62.类的3要素语法 文章目录62.类的3要素语法1. 定义类的语法2. pass语句的作用3.我们学的5个缩进语法4.类的属性5.类的方法6. 创建对象7.类在爬虫中的应用8. 总结1. 定义类的语法 定义类的语法如下&#xff1a; class 类名: 代码块 从语法上来看&#xff1a;类的…

Edify Script (Android Shell)定制Twrp刷机包

本文将通过三方面向大家介绍Edify Script,相信你看完了这篇文章会对安卓系统可刷写插件有一个比较完整的认识,并且能过通过阅读此文章实现使用twrp刷入自己写的插件zipi包。网上能搜到的大部分是旧的,新版本去掉了很多的edify函数,照着他们那个写多半会报错。 本文分为如下…

LeetCode学习-第三十八天

第三十八天 我使用的C&#xff0c;错误的地方请见谅&#xff0c;文章初衷仅用来督促本人学习&#xff0c;如果恰巧能够给你带来帮助&#xff0c;我会十分开心。 文章目录第三十八天一、537. 复数乘法二、29. 两数相除一、537. 复数乘法 复数 可以用字符串表示&#xff0c;遵循…

CentOS7如何修改IP地址及UUID

CentOS7系统下&#xff0c;如果要把IP地址修改为192.168.1.80&#xff0c;子网掩码是255.255.255.0&#xff0c;网关是192.168.1.1&#xff0c;DNS是192.168.1.1&#xff0c;那么我们使用客户端连接CentOS或者打开系统终端&#xff0c;切换到root用户&#xff0c;命令&#xff…

开料的目的和子流程,一文读懂

经过多个月的分享&#xff0c;关于PCB行业&#xff0c;想必朋友们已经有了一些个人的理解&#xff0c;甚至对PCB行业&#xff0c;还产生了浓厚的兴趣。 但是&#xff0c;PCB生产工艺是非常复杂的&#xff0c;想要深入地学习并且学好PCB生产工艺&#xff0c;假如不在PCB的生产一…

如何从PyTorch中获取过程特征图

一、获取Tensor 神经网络在运算过程中实际上是以Tensor为格式进行计算的&#xff0c;我们只需稍稍改动一下forward函数即可从运算过程中抓到Tensor 代码如下&#xff1a; base_feature self.extractor.forward(x) #正常的前向传递 featurebase_feature.detach() …

JavaScript 数据类型

文章目录JavaScript 数据类型JavaScript 拥有动态类型JavaScript 字符串JavaScript 数字JavaScript 布尔JavaScript 数组JavaScript 对象Undefined 和 Null声明变量类型JavaScript 数据类型 字符串&#xff08;String&#xff09;、数字(Number)、布尔(Boolean)、数组(Array)、…

基于java eclipse+jsp+mysql+servlet+Spring的学生信息管理系统基础版

基于java eclipsejspmysqlservletSpring的学生信息管理系统基础版 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言…

【Python百日进阶-数据分析】Day148 - plotly直方图:px.histogram()

文章目录四、实例4.1 带有 Plotly Express 的直方图4.1.1 基本直方图4.1.2 使用一个包含分类数据的列4.1.3 选择方箱的数量4.1.4 日期数据直方图4.1.5 分类数据的直方图4.1.6 访问计数&#xff08;y 轴&#xff09;值4.1.7 标准化类型4.1.8 直方图的外观4.1.9 一列不同值的几个…

MySQL基础篇第10章(创建和管理表)

1. 基础知识 1.1 一条数据存储的过程 存储数据是处理数据的第一步 。只有正确地把数据存储起来&#xff0c;我们才能进行有效的处理和分析。否则&#xff0c;只 能是一团乱麻&#xff0c;无从下手。 那么&#xff0c;怎样才能把用户各种经营相关的、纷繁复杂的数据&#xff…

npm 包 chalk-next 被开发者投毒,源码 SRC 目录被删除

一、事件简述 1月5日&#xff0c;有开发者在 twitter 中发文称遭遇了名为 chalk-next 的组件投毒事件&#xff0c;该组件存在收集配置信息和删除本地文件的恶意逻辑&#xff0c;当前 NPM 仓库已经下线了该组件。 chalk-next 组件的开发者也是 vue-admin-beautiful 项目的作者 …

配对交易策略设计

可交易的一个关键要求是两个股票的对数价格序列之间存在均衡关系。 而均衡关系由两个值描述&#xff1a;协整系数以及均衡值。一旦确定这两个值&#xff0c;它们就可以用来构建两种股票的对数价格的线性组合&#xff0c;即所谓的价差。配对交易是对价差均值回归特性的押注。当…

Gigabyte B450 Aorus Elite AMD Ryzen 5 3600电脑 Hackintosh 黑苹果efi引导文件

硬件型号驱动情况主板Gigabyte B450 Aorus Elite处理器AMD Ryzen 5 3600已驱动内存16GB Samsung DDR3 1600MHz已驱动硬盘Samsung 840 Evo 250GB已驱动显卡AMD Radeon RX570 4gb已驱动声卡Realtek ALC892已驱动网卡Realtek 8111G已驱动无线网卡蓝牙Asus AX3000 Dual Band PCI-E …

(一)云原生基础概念-容器-Kubernets

文章目录云原生云原生历程云原生技术范畴云原生与传统部署云原生关键技术传统vs微服务vsServerlessServerless容器分层复用模式容器运行构建镜像容器引擎架构-moby容器和VM之间的差异Kubernetes调度自动恢复水平伸缩总架构Master架构Node架构Pod一个kubernet架构VolumeDeployme…

【计组】GPU--《深入浅出计算机组成原理》(六)

​课程链接&#xff1a;深入浅出计算机组成原理_组成原理_计算机基础-极客时间 GPU 是随着计算机里面需要渲染三维图形的出现&#xff0c;而发展起来的设备。 一、GPU和图形渲染 完整的5 个步骤的渲染流程一般也被称为图形流水线&#xff08;Graphic Pipeline&#xff09; …

SREWorks v1.4 版本发布 | 离线安装 前端重构

在 v1.3 版本之后&#xff0c;SREWorks 团队收集了较多的用户反馈&#xff0c;大家普遍对于 SREWorks 的内网离线安装有较大的诉求。于是团队决定进一步增强这部分的安装能力。 前端工程部分 (frontend)&#xff0c;为了开发者更加敏捷高效的协作开发&#xff0c;以及便于社区…

web(一)—— HTML基础(web标准、开发工具、标签)

目标能够理解HTML的 基本语法 和标签的关系 能够使用 排版标签 实现网页中标题、段落等效果 能够使用 相对路径 选择不同目录下的文件 能够使用 媒体标签 在网页中显示图片、播放音频和视频 能够使用 链接标签 实现页面跳转功能一、基础认知目标&#xff1a;认识 网页组成 和 五…