【web开发】6、Django(1)

2023-10-27

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、Django是什么?

Django属于后端(也称为服务器端)Web开发框架。
它用于构建和管理Web应用程序的服务器端部分,包括处理HTTP请求、管理数据库、处理业务逻辑、生成动态内容以及与前端(客户端)交互
Django的主要任务是处理与服务器和数据库相关的事务,然后将结果发送给前端,以便在用户的浏览器中呈现

二、使用步骤

1.安装Django

cmd:pip install django==2.2.9
安装成功标志:在python安装目录下的scripts下有django-admin.exe

2.创建项目

在终端创建项目
(1)打开终端cmd
(2)cd定位进入某个目录
(3)执行命令创建项目

“D:\python311\Scripts\django-admin.exe” startproject 项目名称

D:/python311/Scripts/django-admin startproject try_mysite

//如果D:\python311\Scripts已加入环境系统变量:
django-admin.exe startproject 项目名称

django-admin.exe startproject try_mysite11

在这里插入图片描述
Pycharm(专业版)创建项目
在这里插入图片描述
在这里插入图片描述

特殊说明:

在终端创建项目是标准的
Pycharm 在标准的基础上添加了东西;
(1)templates目录(删除)注意:如果没有删除,则在创建模板时,会优先在根目录下寻找templates
(2)setings(左Pycharm创建版,右终端创建版)(专业版增加的内容删除)

在这里插入图片描述

默认项目文件介绍
在这里插入图片描述

settings.py:项目配置文件(连接数据库…注册app)【常操作】
urls.py:URL和函数的对应关系【常操作】
wsgi.py:接受网络请求【不动】
manage.py: 项目的管理,启动项目、创建app、数据管理【不动】

3.创建app

用户管理、订单管理、后台管理、网站、API

法一:终端:python manage.py startapp app01
法二:工具-运行manage.py任务,,在下面输入startapp app 名字

终端

python manage.py startapp app01

在这里插入图片描述

默认app文件介绍
在这里插入图片描述
migrations :数据库字段变更记录
admin.py : django默认提供了admin后台管理
apps.py :app启动类
models.py 【*重要】对数据库操作
tests.py :单元测试
views.py: 【重要】函数

4.快速上手

1.确保已注册:【settings.py】

在apps.py文件下找到对应的名字,在settings.py文件下的对应位置进行添加(即注册)。
在这里插入图片描述
在这里插入图片描述

2.编写URL和视图函数对应关系【urls.py】

from app01 import views

urlpatterns = [
    path('index/',views.index),
]

在这里插入图片描述
3.编写视图函数【views.py】

from django.shortcuts import HttpResponse,

def index(request):
    return HttpResponse("欢迎使用")

在这里插入图片描述
4.启动django项目
(1)命令行启动python manage.py runserver
(2)pycharm启动 (启动按钮)

注意:Django创建项目所涉及的文件很多,容易混淆或遗漏,下面再写一个页面【urls】,可以多看几遍,会有收获的。

5.再写一个页面【urls.py】
在这里插入图片描述
在这里插入图片描述
6.templates模板【目录下创建html文件】
urls.py下

  path('user/list',views.user_list),

views.py下

 def user_list(request):
    return render(request,"user_list.html")

在app01的下级目录下创建templates目录,并在目录下创建user_list.html。
在这里插入图片描述
7.静态文件:图片\css\js
(1)创建static文件夹,其下创建文件夹css/img/js/plugins
{% load static %}:导入
{% static ‘路径’%}
在这里插入图片描述

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="{% static 'plugins/bootstrap-3.4.1/css/bootstrap.css' %}">
</head>
<body>
<h1>用户列表</h1>
<input type="text" class="btn btn-primary" value="新建"/>
<div>
    <img src="{% static 'img/证件照.jpg' %}" alt="">
    <script src="{% static 'js/jquery-3.7.0.min.js' %}"></script>
    <script src="{% static 'plugins/bootstrap-3.4.1/js/bootstrap.js' %}"></script>
</div>
</body>
</html>

8.模板语法(django开发的)
本质上:在HTML中写一些占位符,由数据对这些占位符进行替换或处理。
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>模板语法的学习</h1>
    <div>{{ n1 }}</div>
    <div>{{ n2 }}</div>
    <div>{{ n2.0 }}</div>
    <div>{{ n2.1 }}</div>
    <div>
        {% for item in n2 %}
        <span>{{ item }}</span>
        {% endfor %}
    </div>
    <div>
        {{ n3.name }}
        {{ n3.salary }}
        {{ n3.role }}
    </div>
    <ul>
        {% for item in n3.keys %}
            <li>{{item}}</li>
        {% endfor %}
    </ul>
    <ul>
        {% for item in n3.values %}
            <li>{{item}}</li>
        {% endfor %}
    </ul>
    <ul>
        {% for k,v in n3.items %}
            <li> {{k}} = {{v}} </li>
        {% endfor %}
    </ul>
{{ n4.1.name }}
{% for item in n4 %}
    <div>{{ item.name }} {{ item.salary }}</div>
{% endfor %}
    <hr/>
{% if n1 == "贝贝" %}
    <hi>哒哒哒哒</hi>
{% else %}
    <h1></h1>
{% endif %}
</body>
</html>

9.请求和响应

def login(request):
    if request.method == "GET":
        return render(request,"login.html")

    username= request.POST.get('username')
    print(username)
    password = request.POST.get('password')
    print(password)
    if username == "a" and password == "123":
        # return HttpResponse("登录成功")
        return redirect("https://www.baidu.com/")

    return render(request,"login.html",{"error_msg":"用户名或密码错误"})

在这里插入图片描述
django安全机制的校验,解决办法:在form表单下写入{% csrf_token %}

数据库操作

Django开发操作数据库更简单,内部提供了ORM框架

1.安装第三方模块

pip install mysqlclient
pip install --target=提示的路径 requests
7.2ORM的作用:
(1)创建、修改、删除数据库中的表(不用写sql语句,但无法创建数据库)
(2)操作表中的数据(不用写sql语句)

2.自己创建数据库

启动MYSQL数据库,登录并创建

show databases;

create database 数据库名字 DEFAULT CHARSET utf8 COLLATE utf8_general_ci ; 

在这里插入图片描述

3.DJango链接数据库

在settings.py上修改,密码是前面设置的密码12345

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': "try_orm",
        "USER":'root',
        'PASSWORD':'12345',
        'HOST':'127.0.0.1',
        'POST':3306,
    }
}

4.DJango操作表中可创建、删除、修改

(1)创建表:在models.py中创建“类”

from django.db import models
# Create your models here.
class UserInfo(models.Model):  #类的名称为UserInfo
    name = models.CharField(max_length=32)
    password = models.CharField(max_length=64) #字符串类型
    age = models.IntegerField() #整型类型
#读到类自动生成如下表
# """
# create table app01_userinfo(
#     id bigint auto_increment primary key,
#     name varchar (32),
#     password varchar (64),
#     age int )
# """

(2)执行命令(前提是app01已注册)
法一:在终端

python manage.py makemigrations

python manage.py migrate

在这里插入图片描述

法二:工具-运行manage.py任务,,在终端依次输入makemigrations migrate
在这里插入图片描述
orm帮忙创建的表
在这里插入图片描述
表创建成功:此后数据库内有刚才创建同数据库名字相同的数据表,内容包含在models.py下定义的类

总结
创建数据库与链接:mysql下创建库,并在settings.py下修改databases
创建表:在app01下的models.py下定义一个类,在终端执行两个命令:
python manage.py makemigrations
python manage.py migrate
在mysql内则自动创建一个与类名相同的表,其内容是类定义时所包含的数据
注意:在表中新增列时,由于已存在列中可能已有数据,所有新增列必须指定新增列的数据
1)手动输入一个值
2)设置默认值(default=2)
3)允许为空(null=True,blank=True)

5.Django操作表中的数据

def orm(request):
    # 1新建
    Department.objects.create(title="运营部")
    Department.objects.create(title="销售部")
    Department.objects.create(title="摆烂部")
    Role.objects.create(caption="海上")
    # 2删除
    Department.objects.filter(id=1).delete()
    Role.objects.all().delete()
    # 3获取数据 data_list=[行,行] QuerySet类型
    data_list =Department.objects.all()
    print(data_list)
    for obj in data_list:
        print(obj.title)
    Department.objects.filter(id=4)
    # 4更新数据
    # Department.objects.all().update(title="部门")
    Department.objects.filter(id=3).update(title="部门")
    return HttpResponse("成功")

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【web开发】6、Django(1) 的相关文章

  • 为什么我不能使用“exclude”从 python 轮子中排除“tests”目录?

    考虑以下包结构 与以下setup py内容 from setuptools import setup find packages setup name dfl client packages find packages exclude te
  • Python Nose 导入错误

    我似乎无法理解鼻子测试框架 https nose readthedocs org en latest 识别文件结构中测试脚本下方的模块 我已经设置了演示该问题的最简单的示例 下面我会解释一下 这是包文件结构 init py foo py t
  • 编辑 scikit-learn 决策树

    我想编辑 sklearn DecisionTree 例如改变条件或切割节点 叶子等 但似乎没有功能可以做到这一点 如果我可以导出到文件 编辑它以导入 如何编辑决策树 环境 Windows 10 python3 3 sklearn 0 17
  • Django css文件缓存

    我有一个 css 文件 我想修改它以满足我的需要 问题是它似乎被缓存在某个地方 因为无论我在 css 文件中做什么 我都看不到更改 我确信我指向了正确的文件 因为现在我已经对其进行了修改 并且它有效 有什么设置可以关闭缓存吗 谢谢 正如本文
  • Python sqlite3游标没有属性commit

    当我运行这段代码时 path Scripts wallpapers single png conn sqlite3 connect Users Heaven Library Application Support Dock desktopp
  • 为什么我的scoped_session 引发 AttributeError: 'Session' object has no attribute 'remove'

    我正在尝试建立一个系统 将数据库操作优雅地推迟到单独的线程 以避免在 Twisted 回调期间发生阻塞 到目前为止 这是我的方法 from contextlib import contextmanager from sqlalchemy i
  • Pyspark 数据框逐行空列列表

    我有一个 Spark 数据框 我想创建一个新列 其中包含每行中具有 null 的列名称 例如 原始数据框是 col 1 col 2 col 3 62 45 null 62 49 56 45 null null null null null
  • 使用 Scipy imsave 将 Numpy 数组保存到图像时保留未更改的数据

    使用 Scipy 保存二维 Numpy 数组 单个值 时toimage or imsave像素值与 Numpy 数组中的像素值不完全匹配 相反 在某些区域 主要是边缘 图像算法似乎使用某种插值 是否有一个选项可以停止插值并保留准确的数据 例
  • 用Python中的嵌套for循环替换重复的if语句?

    在我编写的下面的代码中 n 4 所以有五个 if 语句 所以如果我想将 n 增加到 比如说 10 那么就会有很多 if 语句 因此我的问题是 如何用更优雅的东西替换所有 if 语句 n p 4 5 number of trials prob
  • 如何使用 Python 多处理避免在分叉进程中加载​​父模块

    当您创建一个Pool使用Python的进程multiprocessing 这些进程将分叉 父进程中的全局变量将显示在子进程中 如下面的问题所述 如何限制多处理进程的范围 https stackoverflow com questions 2
  • 如何对这个 Flask 应用程序进行单元测试?

    我有一个 Flask 应用程序 它使用 Flask Restless 来提供 API 我刚刚写了一些身份验证来检查 如果消费者主机被识别 该请求包含一个哈希值 通过加密 POST 的请求内容和 GET 的 URL 以及秘密 API 密钥来计
  • Django - 电子邮件发送两次

    每当我使用如下所示的电子邮件设置从views py调用下面的方法时 电子邮件的两份副本都会发送给收件人 并且我收到如下所示的错误 def sendEmailBasic request msg EmailMessage Request Cal
  • 如何使用 PySpark 有效地将这么多 csv 文件(大约 130,000 个)合并到一个大型数据集中?

    我之前发布了这个问题并得到了一些使用 PySpark 的建议 如何有效地将这一大数据集合并到一个大数据框中 https stackoverflow com questions 60259271 how can i merge this la
  • Matplotlib 图例不工作

    自从升级 matplotlib 以来 每当尝试创建图例时 我都会收到以下错误 usr lib pymodules python2 7 matplotlib legend py 610 UserWarning Legend does not
  • 从 IMDbPy 结果中的片目中获取电影 ID

    我正在尝试创建一个数据集 允许我根据 Python IMDb API 中的演员 ID 和电影 ID 加入演员和电影 现在 我正在尝试从演员的电影作品中提取电影 ID 列表 但无法做到 例如 我知道 Rodney Dangerfield 在
  • Spyder 如何在同一线程的后台运行 asyncio 事件循环(或者确实如此?)

    我已经研究 asyncio 模块 功能几天了 因为我想将它用于我的应用程序的 IO 绑定部分 并且我认为我现在对它的工作原理有一个合理的理解 或者在至少我认为我已经理解了以下内容 任一时刻 任一线程中只能运行一个异步事件循环 一旦一切都设置
  • 如何设置 matplotlib 表中列的背景颜色

    我在一个目录中有多个 txt 文件 例如 d memdump 0 txt 1 txt 10 txt 示例文本文件如下 Applications Memory Usage kB Uptime 7857410 Realtime 7857410
  • 最小硬币找零问题——回溯

    我正在尝试用最少数量的硬币解决硬币找零问题 采用回溯法 我实际上已经完成了它 但我想添加一些选项 按其单位打印硬币数量 而不仅仅是总数 这是我下面的Python代码 def minimum coins coin list change mi
  • scipysolve_ivp() 中的访问时间步长

    我有一个常微分方程系统 正在使用 scipy 的solve ivp 函数求解 它运行良好 但我在访问每个步骤中使用的时间步时遇到问题 我知道solve ivp 将当前时间传递给用户定义的函数 但我需要使用的时间步长 而不是当前时间 为了解决
  • 从 pandas 数据框中绘制堆积条形图

    我有数据框 payout df head 10 复制以下 Excel 绘图的最简单 最智能和最快的方法是什么 我尝试过不同的方法 但无法让一切都到位 Thanks 如果您只想要一个堆积条形图 那么一种方法是使用循环来绘制数据框中的每一列 并

随机推荐

  • 学习STM32 SPI学习与应用

    认识一下SPI SPI的全称是 Serial Peripheral Interface 意为串行外围接口 SPI接口主要应用在EEPROM FLASH 实时时钟 AD转换器 还有数字信号处理器和数字信号解码器之间 SPI是一种高速的 全双工
  • 中大型企业选择云服务器还是传统服务器自建机房成本核算

    中大型企业自建机房还是选择阿里云服务器或腾讯云服务器 企业上云是趋势 大型企业自己购买服务器自建机房还是使用云服务器更省钱 自建机房一次性投入 但是云服务器每年都需要续费 云服务器吧从机房部署 容灾备份 安全可靠 运维及成本等方面来全方位对
  • Flask学习笔记(十三)数据库基本操作

    数据库基本操作 在Flask SQLAlchemy中 插入 修改 删除操作 均由数据库会话管理 会话用db session表示 在准备把数据写入数据库前 要先将数据添加到会话中然后调用commit 方法提交会话 数据库会话是为了保证数据的一
  • vue项目中自动拉取更新Iconfont(阿里巴巴图标库)

    在vue项目中使用 iconfont图标库 网上的栗子很多 这边就随手给一个 点这里 上面的解决了 那我就很苦恼 我每次添加 或删除 或更新图标库 需要重新下载 自己手动去覆盖吗 我是拒绝的 so 自动覆盖就很有必要了 贴一下我的iconf
  • Linux通过Nginx部署Vue项目

    Vue Springboot前后端项目分离开发 我们在部署的时候就需要将两者分开来部署 vue部署 由于我们是通过Linux nginx的方式来部署vue 因此在你的linux中需要安装nginx nginx的安装方式不多说 直接解压ngi
  • 网络安全期末复习

    前言 本文用于网络安全课期末复习资料 都是从老师上课讲的ppt和课本总结的 可能不太全 后面有一部分习题 填空和简答 如果需要word版可以找我要 目录 知识点 信息安全属性 网络防御模型 密码体制 数字证书与公钥基础设施 PKI 防火墙
  • 油盐微服务——声明式服务调用Feign

    文章目录 Feign快速入门 参数绑定 继承特性 Ribbon配置 Hystrix配置 对于前面的Ribbon和Hystrix的介绍 Spring Cloud Feign基于Netflix Feign实现 封装整合了以上两个工具 来简化开发
  • Apache mod_wsgi模块简介

    Apache HTTP服务器的mod wsgi扩展模块 实现了Python WSGI标准 可以支持任何兼容Python WSGI标准的Python应用 出于安全的考虑 建议使用mod wsgi 3 5及以后的版本 最新版本是2017年1月发
  • [C/C++]内存管理,对内存进行操作

    目录 一 内存结构 二 内存拷贝函数 三 栈空间与堆空间 四 变量的四种存储类型 五 函数返回值使用指针 六 常见错误总结 个人主页 北 海 CSDN新晋作者 欢迎 点赞 评论 收藏 收录专栏 C C 希望作者的文章能对你有所帮助 有不足的
  • Python写2048小游戏全部代码及所用图片

    鉴于有很多朋友要图片 把整个项目上传了 自行去取吧 资源地址 https download csdn net download qq 44651842 20009590 游戏效果 游戏用到的图片 数字图片都是90像素的正方形 游戏代码 20
  • python外星人入侵添加音效_Python 项目实践一(外星人入侵)第一篇

    python断断续续的学了一段实践 基础课程终于看完了 现在跟着做三个小项目 第一个是外星人入侵的小游戏 一 Pygame pygame 是一组功能强大而有趣的模块 可用于管理图形 动画乃至声音 让你轻松的开发出想要的游戏 二 安装Pyga
  • sqlite的事务和锁,很透彻的讲解 【转】

    原文 sqlite的事务和锁 http 3y uu456 com bp 877d38906bec097sf46se240 1 html 事务 事务定义了一组SQL命令的边界 这组命令或者作为一个整体被全部执行 或者都不执行 事务的典型实例是
  • 概念题3

    SaaS的意思是软件服务化 Software as a Service Windows上的共享文件传输使用哪个端口137 138 139 445 我国PCM数字设备间的传输接口码型是HDB3 调制解调的目的是 MVC全名是Model Vie
  • 基于SSM的在线考试系统

    全网粉丝20W csdn特邀作者 博客专家 CSDN新星计划导师 java领域优质创作者 博客之星 掘金 华为云 阿里云 InfoQ等平台优质作者 专注于Java技术领域和毕业项目实战 文末获取项目下载方式 一 项目背景介绍 在线考试借助于
  • 全网最详细,Fiddler抓包实战 - 网页浏览器https请求(超详细)

    目录 导读 前言 一 Python编程入门到精通 二 接口自动化项目实战 三 Web自动化项目实战 四 App自动化项目实战 五 一线大厂简历 六 测试开发DevOps体系 七 常用自动化测试工具 八 JMeter性能测试 九 总结 尾部小
  • Qt-D指针和Q指针及使用

    阅读Qt的源代码的时候 我们经常看Q D Q Q Q DECLARE PRIVATE Q DECLARE PUBLIC这几个宏 这几个宏是干什么用的呢 其实这几个宏就是实现D指针和Q指针的宏 D指针在Qt的源码中大量使用 根本目的在于解决二
  • Cocoapods方式导入OC库和swift库

    Cocoapods 是 iOS 应用的包管理程序 它简化了第三方库的导入并且将帮你处理库之间的依赖 在这个教程中 我们将会使用 cocoa pods 导入 Alamofire swift库 和AFNetworking OC库 这两个个第三方
  • Spring Cache详解

    第一节 Spring Cache介绍 1 Spring Cache 简介 从3 1开始 Spring引入了对Cache的支持 其使用方法和原理都类似于Spring对事务管理的支持 Spring Cache是作用在方法上的 其核心思想是这样的
  • 机器学习 加利福尼亚房价预测

    学习目标 提示 导入包 例如 import pandas as pd import numpy as np from sklearn datasets import fetch california housing from sklearn
  • 【web开发】6、Django(1)

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 一 Django是什么 二 使用步骤 1 安装Django 2 创建项目 3 创建app 4 快速上手 数据库操作 1 安装第三方模块 2 自己创建数据库 3 DJ