Django框架丨从零开始的Django入门学习

Django 是一个用于构建 Web 应用程序的高级 Python Web 框架,Django是一个高度模块化的框架,使用 Django,只要很少的代码,Python 的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的 Web 服务。

每个 Django App 的组织结构符合 Django 的 MTV 法则——Model(模型)+ Template(模板)+ View(视图),文章内容将从安装开始,对Django每一个模块的操作进行简单的讲解

1. 安装Django

想必大家肯定都安装好python了,如果没有的话网络上很多教程可以参考,安装好python后可以直接在命令行安装Django

pip install django

安装完成后,你可以通过运行以下命令验证 Django 是否成功安装:

python -m django --version

或通过import进行检查

2. 创建项目

2.1 命令行新建项目

通过终端进入到需要创建项目的指定目录,通过Django的django-admin.py命令新建工程

cd Django
django-admin startproject Hellodjango

文件组成

django_news
├── django_news              // 项目全局文件目录
│   ├── __init__.py
│   ├── asgi.py.py           // ASGI 兼容的 Web 服务器的入口(异步接受网络请求)
│   ├── settings.py          // 全局配置,包括链接数据库等操作
│   ├── urls.py              // 全局路由URL 声明
│   └── wsgi.py              // WSGI 兼容的 Web 服务器的入口(同步接受网络请求)
└── manage.py                // 项目管理脚本

2.2启动服务器(runserver)

创建好后先尝试启动服务器看是否成功

# 不定义端口号默认为8000
python manage.py runserver
python manage.py runserver 8888
# 0.0.0.0 让其它电脑可连接到开发服务器
python manage.py runserver 0.0.0.0:8888

上面三句都可以启动服务,见到以下欢迎页面就是安装创建成功了(Django 开发服务器可以保持开启,修改代码会自动重新加载,不需要重新启动服务器,非常方便。)

3 新建应用(startapp)

新建一个App——相当于功能的划分,一个 Django 应用由多个子应用组成,一般称之为 App。

python manage.py startapp new01

新建app的文件夹结构如下:

new01                     // news 应用目录
├── migrations           // 数据库迁移变更记录
│   └── __init__.py      
├── __init__.py          // 初始化模块
├── admin.py             // 默认自带的后台管理配置
├── apps.py              // 应用配置
├── models.py            // 数据模型、数据库操作等
├── tests.py             // 单元测试
└── views.py             // 视图,url里的函数在这里找

3.1 加入配置文件

在Hellodjango/settings.py中找到 INSTALLED_APPS,加入新建app的config

3.2 第一个页面

3.2.1 视图(view)

打开new01/views.py,写一个简单的index,相当于写了一个页面

from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.def index(request):return HttpResponse('Hello Django!')
3.2.2 接入路由

下一步是让路由系统能够访问到刚才写好的视图函数,也就是将页面加入到网页中

在Hellodjango/urls.py中,修改Django自带的urlpatterns,通常接收以下三个参数

route:必须,即实际的访问路由,空字符串等于 /,即空路由,展示为首页
view:必须,该路由将要访问的view视图
name:可选,该路由的名称,方便后续在模板中使用from new01 import viewsurlpatterns = [# path('admin/', admin.site.urls),path('index/', views.index)
]

不过当然一个系统的页面会有很多,网页编辑好了之后将路由加到urls.py的urlpatterns中就可以了

可以看到urls.py文件中,有一行path(‘admin/’, admin.site.urls),取消注释访问http://127.0.0.1:8888/admin已经可以看到后台系统的登录页面

但此时还没有连接数据库,其余内容到后面讲述4.数据库的时候再进行操作

3.3 加入网页(templates,render)

在django项目目录下新建一个templates文件夹,文件夹下面放入html文件

把templates加入到路径中(settings.py的TEMPLATES),因为默认情况下会放到app下的templates里面

写一个简单的网页web01.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset=="UTF-8"><title>Title</title>
</head>
<body><div>This is a web</div>
</body>
</html>

将网页写入到views.py中:在这里我们使用render函数,第一个参数为request,第二个参数是文件名,第三个参数可以不要,是把文件中用{{}}标起来的内容替换的功能。

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

再添加到urls.py

from new01 import viewsurlpatterns = [# path('admin/', admin.site.urls),path('index/', views.index),path('web/', views.web01)
]

此时输入网址,可以看到网页接入成功,其他的样式等可以按照CSS 、html的语法进行添加修改web01.html文件

此时输入端口号,可以看到对应的两个页面都在

4.数据库

Django 的 MTV,我们已经讲了 T(Template)和 V(View),到了最后一个 M(Model)了。数据模型是 Django 入门最大的难点,这一步之后便能真正上手 Django 开发。下面我们先介绍一下 Django 的数据模型设计。

Django 在数据模型方面的特点:

  • 由于高度解耦的设计,可轻松切换各种关系型数据库(默认的 SQLite,可选 MySQL、PostgreSQL、Oracle 等等)
  • 强大的 ORM(Object Relation Mapping,对象关系映射)模块,使得用 Python 操作数据库非常轻松,免去了使用 SQL 的麻烦
  • 优秀的数据库迁移机制(Migration),修改数据模式(Schema)比较方便,能够适应不断变化的功能需求

4.1 开发流程

一般数据模型开发流程如下:

  1. 用 Django 定义一个新的数据模型(在new01/models.py中)
  2. makemigrations命令创建迁移文件(存储在子应用的 migrations 目录里面)
  3. migrate命令执行迁移
    (如后续发现定义有问题或不完善,可以更新数据模型,再重新进行23操作完成数据迁移)

4.2 实现一个简单的模型

4.2.1 创建数据模型

在new01/models.py中,定义数据模型以及你需要的字段,可以先随便定义两个简单的字段进行尝试,代码如下:

from django.db import models
# Create your models here.class Post(models.Model):# 根据模型自动值数据库中创建一个对应的表,此表包括title, name两个字段title = models.CharField(max_length=50)name = models.CharField(max_length=50)def __str__(self):return self.title

定义好后再命令行执行如下命令,创建迁移文件:

python manage.py makemigrations 

通过输出可以看到,成功创建了 new01/migrations/0001_initial.py 迁移脚本,再进行下一步数据库迁移:

python manage.py migrate

数据库迁移完成后,我们就可以创建用于登录后台管理的超级用户:

python manage.py createsuperuser

按照提示步骤输入用户名和密码创建成功就行

4.2.2 后台管理配置

此时再输入前面提到的http://127.0.0.1:8888/admin后台管理页面,就可以通过刚刚创建的超级用户登录查看了

但进入页面可以看到,没有我们创建的应用和模型:

这是因为没有实现后台管理的接口配置,在文件new01/admin.py中接口配置如下:

from django.contrib import admin
from .models import Post
# Register your models here.admin.site.register(Post)

再刷新页面可以看到应用new01和模型Posts

点击 Posts 一栏的 +Add 按钮,随便添加几条数据,也可以看看修改、添加、删除等功能。

4.2.3 视图与数据连接

新建一个网页html文件,这里用先前用于测试的web01.html

在views.py中绑定好页面与数据

from django.shortcuts import render
from .models import Postdef show_name(request):context = {'name_list': Post.objects.all()}return render(request, 'web01.html', context=context)

中html文件中写好渲染数据的语法:

<!DOCTYPE html>
<html lang="en">
<head><meta charset=="UTF-8"><title>Title</title>
</head>
<body>{% if name_list %}<ul>{% for elem in name_list %}<li><h3>{{ elem.title }}</h3><p>{{ elem.name }}</p></li>{% endfor %}</ul>{% else %}<p>no data</p>{% endif %}
</body>
</html>

最后不要忘记中urls.py中添加新设置好的视图

from django.urls import path
from new01 import viewsurlpatterns = [path('name/', views.show_name),
]

最后访问定义好的路由http://127.0.0.1:8888/name,就可以看到刚才在后台管理系统中添加的数据了

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

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

相关文章

《Kettle保姆级教学-核心概念解析》

目录 一、什么是ETL&#xff1f;1、ETL 的三个主要阶段2、ETL 的应用场景3、ETL 工具 二、什么是Kettle&#xff1f;1、Kettle 的核心功能2、Kettle 的主要组件3、Kettle 的优点4、Kettle 的应用场景 三、Kettle核心概念1. 转换&#xff08;Transformation&#xff09;2. 作业&…

DeepSeek:全栈开发者视角下的AI革命者

目录​​​​​​​ DeepSeek&#xff1a;全栈开发者视角下的AI革命者 写在前面 一、DeepSeek的诞生与定位 二、DeepSeek技术架构的颠覆性突破 1、解构算力霸权&#xff1a;从MoE架构到内存革命 2、多模态扩展的技术纵深 3、算法范式的升维重构 4、重构AI竞争规则 三、…

Linux设备树(DTS)入门学习

前言&#xff1a; Linux设备树(DTS)入门学习&#xff0c;资料搜集。从零开始入门学习Linux设备树 Device Tree (DTS)&#xff0c;建议的学习流程如下&#xff1a; 1. 讯为电子在哔站上的-Linux设备树视频教程&#xff08;嵌入式学习之Linux驱动&#xff08;第七期_设备树_全新…

用python实现进度条

前言 在Python中&#xff0c;可以使用多种方式实现进度条。以下是几种常见的进度条格式的实现方法&#xff1a; 1. 使用 tqdm 库 tqdm 是一个非常流行的库&#xff0c;可以轻松地在循环中显示进度条。 from tqdm import tqdm import time# 示例&#xff1a;简单的进度条 fo…

Java 大视界 -- 深度洞察 Java 大数据安全多方计算的前沿趋势与应用革新(52)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

【蓝桥杯嵌入式】LED

1、电路图 74HC573是八位锁存器&#xff0c;当控制端LE脚为高电平时&#xff0c;芯片“导通”&#xff0c;LE为低电平时芯片“截止”即将输出状态“锁存”&#xff0c;led此时不会改变状态&#xff0c;所以可通过led对应的八个引脚的电平来控制led的状态&#xff0c;原理图分析…

苹果再度砍掉AR眼镜项目?AR真的是伪风口吗?

曾经&#xff0c;AR游戏一度异常火热&#xff0c;宝可梦go让多少人不惜翻墙都要去玩&#xff0c;但是也没过去几年&#xff0c;苹果被曝出再度砍掉了AR眼镜项目&#xff0c;面对着市场的变化&#xff0c;让人不禁想问AR真的是伪风口吗&#xff1f; 一、苹果再度砍掉AR眼镜项目&…

PostgreSQL 数据库备份与还原

为了安全与数据共享等&#xff0c;创建好的数据库有时候需要备份操作和还原操作。数据库的备份与还原主要是三个命令&#xff1a;pg_dump、pg_dumpall 和 pg_restore 。 其中pg_dump用于备份单个数据库&#xff0c;它支持多种备份格式&#xff08;SQL、自定义等&#xff09;&a…

排序算法--计数排序

唯一种没有比较的排序(指没有前后比较,还是有交换的)。统计每个元素出现的次数&#xff0c;直接计算元素在有序序列中的位置&#xff0c;要求数据是整数且范围有限。适用于数据为小范围整数&#xff08;如年龄、成绩&#xff09;&#xff0c;数据重复率较高时效率更优。可用于小…

C#结合html2canvas生成切割图片并导出到PDF

目录 需求 开发运行环境 实现 生成HTML范例片断 HTML元素转BASE64 BASE64转图片 切割长图片 生成PDF文件 小结 需求 html2canvas 是一个 JavaScript 库&#xff0c;它可以把任意一个网页中的元素&#xff08;包括整个网页&#xff09;绘制到指定的 canvas 中&#xf…

java进阶专栏的学习指南

学习指南 java类和对象java内部类和常用类javaIO流 java类和对象 类和对象 java内部类和常用类 java内部类精讲Object类包装类的认识String类、BigDecimal类初探Date类、Calendar类、SimpleDateFormat类的认识java Random类、File类、System类初识 javaIO流 java IO流【…

RK3566-移植5.10内核Ubuntu22.04

说明 记录了本人使用泰山派&#xff08;RK3566&#xff09;作为平台并且成功移植5.10.160版本kernel和ubuntu22.04&#xff0c;并且成功配置&连接网络的完整过程。 本文章所用ubuntu下载地址&#xff1a;ubuntu-cdimage-ubuntu-base-releases-22.04-release安装包下载_开源…

stm32点灯 GPIO的输出模式

目录 1.选择RCC时钟 2.SYS 选择调试模式 SW 3.GPIO 配置 4.时钟树配置&#xff08; 默认不变&#xff09;HSI 高速内部时钟8Mhz 5.项目配置 6.代码 延时1s循环LED亮灭 1.选择RCC时钟 2.SYS 选择调试模式 SW 3.GPIO 配置 4.时钟树配置&#xff08; 默认不变&#xff09…

Docker基础以及单体实战

Docker 一、Docker1.1 Docker组成1.2 Dcoker运行图1.3 名称空间Namepace 1.4 docker、Docker compose、kubermetes 二、Docker安装2.1 在线Docker安装2.2 使用官方通用安装脚本2.3 二进制安装Docker三、Docker基础命令3.1 启动类3.2 镜像类3.3 容器类3.4 网络类3.5 Docker comp…

备考蓝桥杯嵌入式7——ADC电压采集

目录 ADC电压采集 代码书写 ADC电压采集 ADC的含义就是将一个范围内的电压映射成为数字传入进来。举个例子&#xff0c;当我们想要做一个非常简单的电压测量计的时候&#xff0c;使用ADC就会将我们的模拟电压信号转化为数字电压信号。 我们的板子上有两个电压采集旋钮&#…

【大模型实战】0代码基于DeepSeek-R1搭建本地知识库,打造专属智能助手

【大模型实战】0代码基于DeepSeek-R1搭建本地知识库,打造专属智能助手 一、ollama下载与安装二、部署deepseek私有模型三、部署embedding模型四、可视化操作工具(1)下载与安装工具(2)部署安装的模型(3) 添加知识库(4)添加智能体助手(5) 助手问答一、ollama下载与安装…

Java进阶(vue基础)

目录 1.vue简单入门 ?1.1.创建一个vue程序 1.2.使用Component模板(组件&#xff09; 1.3.引入AXOIS ?1.4.vue的Methods&#xff08;方法&#xff09; 和?compoted&#xff08;计算&#xff09; 1.5.插槽slot 1.6.创建自定义事件? 2.Vue脚手架安装? 3.Element-UI的…

前端组件标准化专家Prompt指令的最佳实践

前端组件标准化专家Prompt 提示词可作为项目自定义提示词使用&#xff0c;本次提示词偏向前端开发的使用&#xff0c;如有需要可适当修改关键词和示例 推荐使用 Cursor 中作为自定义指令使用Cline 插件中作为自定义指令使用在力所能及的范围内使用最好的模型&#xff0c;可以…

windows环境下安装Python3.13.2

1. 下载 Python 3.13.2 访问 Python 官方网站。 在下载页面中&#xff0c;找到 Python 3.13.2 的版本。如果下载其他版本&#xff0c;可以点击页面底部的“Previous releases”链接&#xff0c;查找旧版本。 选择适合 Windows 的安装包&#xff08;通常是 .exe 文件&#xff…

专业学习|通过案例了解蒙特卡罗模拟实操步骤与含义

一、蒙特卡罗模拟介绍 蒙特卡罗模拟&#xff08;Monte Carlo Simulation&#xff09;是一种基于随机采样的数值计算方法&#xff0c;用于解决具有不确定性或复杂概率分布的问题。其核心思想是通过多次随机抽样来逼近系统的行为或目标函数的真实值&#xff0c;进而对系统进行评估…