【web开发】6、Django(1)

news2025/1/10 20:25:33

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

文章目录

  • 一、Django是什么?
  • 二、使用步骤
    • 1.安装Django
    • 2.创建项目
    • 3.创建app
    • 4.快速上手
  • 数据库操作
    • 1.安装第三方模块
    • 2.自己创建数据库
    • 3.DJango链接数据库
    • 4.DJango操作表中可创建、删除、修改
    • 5.Django操作表中的数据


一、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("成功")

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

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

相关文章

ubuntu下查看文件(夹)大小的命令

记录下自己常用的查看文件夹和文件大小的命令。 1、查看当前所处的文件夹的整个大小&#xff08;只看当前文件夹大小&#xff09; du -sh2、查看当前文件夹中各个文件的大小 用-l或者-lh都行&#xff0c;加个h会增加可读性&#xff0c;如果想看具体某个文件&#xff0c;在后…

wires hark抓包内容解析

1.Frame 22001&#xff1a;这是该数据包的序号&#xff0c;表示wires hark已经捕获并显示了22001个数据包&#xff1b; 2.225 bytes on wire (1800 bits)&#xff1a;该数据的原始大小、以字节和比特显示&#xff1b; 3.225 bytes captured (1800 bits)&#xff1a;wires har…

元宇宙Web3.0科普---MoneyKing链游平台新格局介绍

众所周知&#xff0c;当前元宇宙“行业化”概念爆发后&#xff0c;当前社会甚至全世界再次步入一个全新的世界格局分水岭&#xff1b;随之而来的&#xff0c;包括了元宇宙具像化落地的Web3.0概念。 如果有人不懂什么是元宇宙&#xff0c;不懂什么是Web3.0&#xff0c;小编用最…

多线程与高并发——并发编程(5)

文章目录 五、线程池1 什么是线程池2 JDK自带的构建线程池的方式2.1 FixedThreadPool2.2 SingleThreadExecutor2.3 CachedThreaPool2.4 ScheduleThreadPool2.5 WorkStealingPool3 ThreadPoolExecutor应用&源码剖析3.1 为什么要自定义线程池3.2 ThreadPoolExecutor应用3.3 T…

数据透视表如何让多个行标签并列显示?

数据透视表如何让多个行标签并列显示&#xff1f; “数据透视表工具 - 报表布局" 这里有三种格式&#xff1a;&#xff08;1&#xff09;以压缩形式显示&#xff1b;&#xff08;2&#xff09;以大纲&#xff1b;&#xff08;3&#xff09;以表格形式。 选择“以表格显…

轻量容器引擎Docker基础使用

轻量容器引擎Docker Docker是什么 Docker 是一个开源项目&#xff0c;诞生于 2013 年初&#xff0c;最初是 dotCloud 公司内部的一个业余项目。 它基于 Google 公司推出的 Go 语言实现&#xff0c;项目后来加入了 Linux 基金会&#xff0c;遵从了 Apache 2.0 协议&#xff0c;…

MySQL-DDL语句

MySQL-DDL语句 数据库操作语句增删数据库查看数据库列表创建数据库进入&#xff08;使用&#xff09;数据库/查看当前所在的数据库查看数据库的建库语句查看数据库的编码集和校验集删除数据库修改数据库的编码集查看数据库支持的编码集和校验集 数据库备份备份单个数据库恢复数…

基于spring boot+ vue+ mysql开发的UWB室内外定位系统源码

现代制造业厂区面积大、人员数量多、物资设备不断增加&#xff0c;随着工业信息化技术的发展&#xff0c;大型制造企业中对人员、车辆、物资的管理要求越来越细致。 高精度定位管理系统使用UWB室内定位技术&#xff0c;通过在厂区安装定位基站&#xff0c;为人员或设备佩戴定位…

djanjo安装-各版本对应表

djanjo安装-各版本对应表 1 各版本对应表 django详细版本与python版本对照表&#xff0c;尽量按照表中的版本对应安装 2 djanjo安装 pip install django2.2.* // 默认会安装:Django2.2的最新版本2.2.28和对应的sqlparse-0.4.4、pytz等包python -m django --version // 检测…

抖店的产品是怎么卖出去的?带你了解抖店的核心玩法,不需要直播

我是王路飞。 你认为抖店就是在抖音开直播&#xff0c;然后把产品吆喝着卖出去吗&#xff1f; 如果你是这样看待抖店的话&#xff0c;那只能说明你根本不了解抖音小店&#xff0c;也不了解抖音的带货模式。 今天就给你们讲一下抖店的产品都是怎么卖出去的。 带你了解抖店的…

【Terraform】Terraform自动创建云服务器脚本

Terraform 是由 HashiCorp 创建的开源“基础架构即代码”工具 &#xff08;IaC&#xff09; 使用HCL&#xff08;配置语言&#xff09;描述云平台基础设施&#xff08;这里教你使用低级基础设施&#xff1a;交换机、云服务器、VPC、带宽&#xff09; Terraform提供者&#xf…

SpringBoot原理-自动配置-方案

自动配置原理 在运行SpringBoot项目启动类&#xff08;SpringBootApplication标注启动类&#xff09;启动SpringBoot项目时&#xff0c;SpringBootApplication是一个混合注解&#xff0c;包括 SpringBootConfiguration&#xff08;&#xff09;标识该类是一个配置类&#xff0…

SpringMVC:从入门到精通,7篇系列篇带你全面掌握--四.5分钟搞定文件上传与下载

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于SpringMVC的相关操作吧 需要添加的依赖 <dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</a…

vscode开发油猴插件环境配置指南

文章目录 一、环境配置1.1油猴插件开始编写代码1.2油猴插件配置1.2.1浏览器插件权限1.2.2插件自身权限 2. 油猴脚本API学习2.1 头文件2.2 油猴API 一、环境配置 1.1油猴插件开始编写代码 在vscode 中写入如下代码‘ // UserScript // name cds_test // namespace …

C++ if 语句

一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。 语法 C 中 if 语句的语法&#xff1a; if(boolean_expression) {// 如果布尔表达式为真将执行的语句 }如果布尔表达式为 true&#xff0c;则 if 语句内的代码块将被执行。如果布尔表达式为 false&#xff0c;则 if 语…

Y=AX+B问题

记得数学还是自己喜欢的科目&#xff0c;可熟人发了这么一个求解&#xff0c;要求代码实现。结果把自己整的不会了。 参看他人文档“”YAXB推导求解 以及ppt&#xff1a;中科院的线性代数ppt 1 大家熟悉的拟合法 2矩阵法 学会了吧&#xff1f;&#xff1f; 3 例题 原图来源…

Linux信号量环形队列处理生产消费者模型

目录 一、信号量 1.1 信号量的概念 1.2 信号量的函数接口 1.2.1 sem_init&#xff08;&#xff09; 1.2.2 sem_destroy&#xff08;&#xff09; 1.2.3 sem_wait&#xff08;&#xff09;(P操作申请信号量) 1.2.4 sem_post&#xff08;&#xff09;(V操作增加信号量) 二…

【爬虫】8.1. 深度使用tesseract-OCR技术识别图形验证码

深度使用tesseract-OCR技术识别图形验证码 文章目录 深度使用tesseract-OCR技术识别图形验证码1. OCR技术2. 准备工作3. 简单作用了解3.1. 验证码图片爬取-screenshot_as_png3.2. 识别测试-image_to_string3.2.1. 正确识别3.2.2. 错误识别3.2.3. 灰度调节 3.3. 识别实战-使用im…

qsort 函数的使用

一、qsort 函数的形式 1.1使用 qsort 函数包含的库 1.2qsort 函数的参数 qsort&#xff1a;对数组的元素进行排序 1.3参数中的 compar 函数 struct stu {char name[20];//姓名int age;//年龄double grade;//成绩 }; int cmp_name(void* p1, void* p2) {//如果按照姓名排序ret…

个人信息去标识化具体实施指南

声明 本文是学习个人信息去标识化指南. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 范围 本标准描述了个人信息去标识化的目标和原则&#xff0c;提出了去标识化过程和管理措施。 本标准针对微数据提供具体的个人信息去标识化指导&#xff0c;适…