【100天精通Python】Day50:Python Web编程_Django框架从安装到使用

目录

1 安装Django Web框架

2 创建一个Django 项目

3 数据模型

3.1 在应用程序的 models.py 文件中定义数据模

3.2 创建模型的迁移文件并应用

3.2.1 查询模型对象:

3.2.2 创建新模型对象:

3.2.3 更新模型对象:

3.2.4 删除模型对象:

3.2.5 在模板中呈现模型对象:

4 管理后台

4.1 在应用程序的 admin.py 文件中注册模型

4.2 创建一个管理员用户

4.4 启动开发服务器并访问管理后台

4.5 使用创建的管理员帐户登录管理后台

5  路由和视图

5.1 创建应用程序的 urls.py 文件:

5.2 在应用程序的 urls.py 文件中定义 URL 映射:

5.3 配置项目级别的 URL 映射:

5.4 创建视图函数:

5.5 测试路由:

6 Django 模板

6.1 创建模板文件

6.2 传递数据到模板

6.3  使用模板标签

 6.4 模板继承

 6.5 模板过滤器

1 安装Django Web框架

   (1)打开终端或命令提示符。

   (2)使用 pip 工具安装 Django。pip 是 Python 的包管理工具,通常在 Python 安装时已经包含。你可以使用以下命令来安装 Django

pip install Django

 这将会下载并安装 Django 框架及其依赖项。

  (3)验证安装

在终端中输入以下命令来验证是否成功安装了 Django:

django-admin --version

 如果你看到 Django 的版本号,那么说明 Django 已经成功安装。

2 创建一个Django 项目

要创建一个 Django 项目,你可以按照以下步骤进行操作:

2.1 打开终端或命令提示符

2.2 使用以下命令创建一个新的 Django 项目

将 "myproject" 替换为你想要的项目名称:

django-admin startproject myproject

这将在当前目录下创建一个名为 "myproject" 的新项目目录,并在其中包含 Django 项目的基本结构。

2.3 进入项目目录

使用 cd 命令进入项目目录:

cd myproject

2.4 创建一个 Django 应用程序

        在 Django 项目中创建应用程序是一个重要的步骤,因为它允许你将项目划分为多个模块,每个模块负责不同的功能。Django 项目可以包含一个或多个应用程序,应用程序是组织代码的单元。

        以下是在 Django 项目中创建应用程序的步骤:使用以下命令创建一个新应用程序,将 "myapp" 替换为你的应用程序名称:

python manage.py startapp myapp

 这将在项目目录中创建一个名为 "myapp" 的新应用程序目录。目录结构如下:

其中myproject 项目文件下,各文件功能:

应用myapp 文件夹下:

在 myapp/models.py 文件中定义你的数据模型。这些模型将用于描述应用程序的数据结构。在 myapp/views.py 文件中创建视图,这些视图定义了应用程序的业务逻辑。在 myapp/urls.py 文件中配置 URL 映射,将 URL 与视图关联起来。

        如果需要,可以在 myapp/admin.py 文件中配置 Django 管理界面,以便能够管理应用程序的数据。

        在 myapp/tests.py 文件中编写测试用例,以确保应用程序的功能正常运行。

        最后,将你的应用程序添加到项目的配置中。打开项目目录下的 settings.py 文件,并在 INSTALLED_APPS 列表中添加你的应用程序:

# settings.pyINSTALLED_APPS = [# ...'myapp',# ...
]

如下 

 2.5 配置数据库

        打开项目目录下的 settings.py 文件,配置数据库连接。默认情况下,Django 使用 SQLite 数据库,你可以根据需要更改为其他数据库后端。以下是一个典型的 settings.py 中数据库配置的示例:

# settings.pyDATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3',  # 数据库引擎'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),  # 数据库文件的绝对路径}
}

2.6 迁移数据库

运行以下命令来创建数据库表格:

python manage.py makemigrations
python manage.py migrate

如下:

2.7 运行开发服务器

使用以下命令启动 Django 开发服务器:

python manage.py runserver

     你将看到服务器启动后的输出信息,其中包括访问你的项目的 URL,通常为 http://127.0.0.1:8000/。打开这个 URL,你将看到 Django 的欢迎页面如下,表示你的项目已成功创建。


        现在,你已经创建了一个 Django 项目,并且可以开始在该项目中开发你的应用程序。在项目中添加视图、模型、模板和 URL 映射,以构建你的 web 应用。可查阅Django 官方文档以深入了解如何使用 Django:https://docs.djangoproject.com/en/stable/icon-default.png?t=N7T8https://docs.djangoproject.com/en/stable/

3 数据模型

        在 Django 中,数据模型是用于定义应用程序的数据结构的关键部分。模型定义了数据库表格的结构,包括字段的类型、验证规则和关系。以下是创建和使用数据模型的基本步骤:

3.1 在应用程序的 models.py 文件中定义数据模型

        每个数据模型都是一个 Python 类,通常继承自 django.db.models.Model 类。

from django.db import modelsclass MyModel(models.Model):# 定义模型字段field1 = models.CharField(max_length=100)field2 = models.IntegerField()field3 = models.DateTimeField(auto_now_add=True)# ...其他字段...def __str__(self):return self.field1  # 可选,用于在管理界面中显示模型对象的字符串表示

        在上述示例中,我们定义了一个名为 MyModel 的数据模型,它包含了三个字段:field1field2field3。你可以根据需要添加更多字段,并使用不同的字段类型(例如,字符型、整数型、日期时间型等)。

 Django 数据模型中常见的字段类型

3.2 创建模型的迁移文件并应用

        创建模型的迁移文件是为了确保数据库与 Django 中的数据模型保持同步和一致。迁移文件包含了数据库表格的创建、修改和删除操作,这些操作由 Django 在执行 makemigrations 命令时自动生成。

主要原因包括:

  1. 版本控制数据库结构: 迁移文件将数据库结构的演化历史记录下来,使得多个开发者或团队成员能够协作开发,并且确保每个数据库都处于相同的状态。这对于多环境部署(如开发、测试和生产环境)尤其重要。

  2. 保护数据完整性: 迁移文件确保在修改数据模型时不会破坏已存在的数据。Django 会生成 SQL 语句来执行数据库的更新操作,以便适应模型的变化。

  3. 便于升级和维护: 随着应用程序的演化,数据模型可能需要进行多次更改。迁移文件允许你追踪这些变化,使升级和维护变得更加容易和可控。

  4. 自动化数据库管理: Django 提供了一种自动化管理数据库结构的方式,开发者只需要定义数据模型,而不需要手动编写复杂的数据库表格创建和修改脚本。

        总之,创建模型的迁移文件是一种良好的开发实践,可以确保数据库与应用程序的数据模型保持同步,提高了开发和维护的效率,同时确保了数据的完整性和版本控制。这是 Django 数据库迁移系统的核心功能之一。 

运行以下命令:

python manage.py makemigrations
python manage.py migrate

 这将在数据库中创建与模型对应的数据表。

在你的应用程序中使用模型。你可以在视图中查询、创建、更新和删除模型对象,以及在模板中呈现它们。以下是一些常见的示例操作:

3.2.1 查询模型对象:

my_objects = MyModel.objects.all()  # 获取所有 MyModel 对象
my_object = MyModel.objects.get(id=1)  # 获取特定的 MyModel 对象

3.2.2 创建新模型对象:

new_object = MyModel(field1='Value 1', field2=42)
new_object.save()

3.2.3 更新模型对象:

my_object = MyModel.objects.get(id=1)
my_object.field1 = 'New Value'
my_object.save()

3.2.4 删除模型对象:

my_object = MyModel.objects.get(id=1)
my_object.delete()

3.2.5 在模板中呈现模型对象:

        在 Django 模板中,你可以使用模板标签来呈现模型对象的数据。例如,要显示 field1field2 的值,可以使用以下代码:

<p>{{ my_object.field1 }}</p>
<p>{{ my_object.field2 }}</p>

        这些是创建和使用数据模型的基本步骤。你可以根据你的应用程序需求定义不同的数据模型,并在视图和模板中使用它们来操作和呈现数据。 

4 管理后台

        Django 提供了一个内置的管理后台,允许你轻松管理应用程序的数据。要使用 Django 管理后台,你需要进行以下配置和步骤:

4.1 在应用程序的 admin.py 文件中注册模型

        打开应用程序的 admin.py 文件,并将要在管理后台中管理的模型注册到 admin.site.register 中。例如 

from django.contrib import admin
from .models import MyModeladmin.site.register(MyModel)

 这将使 MyModel 模型在管理后台中可见。

4.2 创建一个管理员用户

在终端中运行以下命令以创建一个管理员用户:

python manage.py createsuperuser

 你需要提供用户名、电子邮件地址和密码。

4.4 启动开发服务器并访问管理后台

运行开发服务器:

python manage.py runserver

 访问 http://localhost:8000/admin/(或者你的开发服务器地址)以打开管理后台登录页面。 (或者你的开发服务器地址)以打开管理后台登录页面。 

4.5 使用创建的管理员帐户登录管理后台

        一旦登录,你将看到管理后台的控制面板,可以在其中管理注册的模型。你可以添加、编辑和删除模型对象,查看详细信息,并执行其他管理操作。

 你看到这个错误是因为在你的 Django 配置文件中设置了 DEBUG = True。将其改为 False,Django 将显示一个标准的 404 页面。

刷新页面如下:

        通过管理后台,你可以轻松管理你的应用程序的数据,而无需编写额外的代码。它提供了一个方便的界面,用于管理你的应用程序的后端数据。请注意,管理后台默认提供了一些功能,但你也可以自定义管理后台界面,以满足你的特定需求。

        以上这些是使用 Django 管理后台的基本步骤。你可以在应用程序中注册多个模型,并在管理后台中管理它们。

5  路由和视图

        在 Django 中,路由(也称为 URL 映射)用于定义 URL 与视图之间的关系,确定哪个视图函数将处理特定的 URL 请求。以下是在 Django 中配置路由的基本步骤:

5.1 创建应用程序的 urls.py 文件:

        在你的 Django 应用程序目录中,创建一个名为 urls.py 的 Python 文件。这个文件将包含应用程序的 URL 映射。

5.2 在应用程序的 urls.py 文件中定义 URL 映射:

        使用 Django 的 path() 函数或 re_path() 函数(用于正则表达式匹配)来定义 URL 映射。每个 URL 映射都将一个 URL 模式与一个视图函数关联起来。以下是一个示例 urls.py 文件的基本结构:

from django.urls import path
from . import views  # 导入应用程序的视图urlpatterns = [path('url-pattern/', views.my_view, name='my-view-name'),# 更多 URL 映射...
]

         在这个示例中,我们导入了应用程序的视图函数,然后使用 path() 函数将 URL 模式 /url-pattern/ 映射到 my_view 视图函数,并为这个 URL 映射指定了名称 my-view-name

5.3 配置项目级别的 URL 映射:

        除了应用程序级别的 URL 映射外,还需要在项目的主 URL 配置文件中定义项目级别的 URL 映射。通常,这是在项目的 urls.py 文件中完成的,其中包括应用程序的 URL 映射。例如:

from django.contrib import admin
from django.urls import include, pathurlpatterns = [path('admin/', admin.site.urls),  # 包括 Django 管理后台的 URL 映射path('myapp/', include('myapp.urls')),  # 包括应用程序的 URL 映射# 更多项目级别的 URL 映射...
]

 在这个示例中,我们使用 include() 函数将应用程序的 URL 映射包含到项目的主 URL 映射中,并使用 /myapp/ 作为应用程序的命名空间。

5.4 创建视图函数:

        在 Django 中,视图(Views)是处理 web 请求并生成 web 响应的 Python 函数或类。视图函数接收 HTTP 请求,并根据请求执行相应的逻辑,然后返回 HTTP 响应,通常是一个 HTML 页面。

        在应用程序的视图文件中(通常是 views.py 文件),编写视图函数来处理 URL 映射指向的请求。视图函数接收请求并返回响应。

from django.http import HttpResponsedef my_view(request):return HttpResponse("Hello, World!")

 这是一个简单的示例,该视图函数返回一个包含 "Hello, World!" 文本的 HTTP 响应。

5.5 测试路由:

        启动 Django 开发服务器后,你可以在浏览器中访问配置的 URL 映射,然后查看视图函数的响应。

        以上是在 Django 中配置路由的基本步骤。你可以根据你的应用程序需求添加更多的 URL 映射和视图函数,以构建你的 web 应用。路由是将 URL 与视图和功能相关联的重要工具。

6 Django 模板

          Django 模板是用于生成动态 HTML 内容的强大工具,它允许你将数据从视图传递到模板,然后在模板中使用模板标签和模板语法来呈现数据。以下是关于 Django 模板的基本概念和用法:

6.1 创建模板文件

        在 Django 项目的应用程序目录中,通常有一个名为 templates 的文件夹,用于存储模板文件。在这个文件夹中,你可以创建 HTML 文件,这些文件将用于呈现你的页面。例如,你可以创建一个 my_template.html 文件。

6.2 传递数据到模板

        在视图函数中,你可以使用上下文(Context)将数据传递给模板。通常,你会将数据包装在一个字典中,然后将字典传递给模板。示例:

from django.shortcuts import renderdef my_view(request):my_data = {'name': 'John', 'age': 30}return render(request, 'my_template.html', {'data': my_data})

         在这个示例中,my_data 字典中的数据被传递给了名为 'my_template.html' 的模板,并将其存储在 data 变量中。

6.3  使用模板标签

         Django 模板引擎提供了一些内置的模板标签,用于在模板中插入动态内容、循环和条件语句等。以下是一些示例:例如,在模板中可以使用以下代码显示传递的数据

  • 使用 {{ variable }} 插入变量的值。
  • 使用 {% for item in list %}...{% endfor %} 进行循环。
  • 使用 {% if condition %}...{% endif %} 进行条件判断。
<p>Name: {{ data.name }}</p>
<p>Age: {{ data.age }}</p>

 6.4 模板继承

        Django 模板支持模板继承,这允许你创建一个基本模板(例如,页面的结构和布局),然后在其他模板中扩展它。这样,你可以在每个页面中重用相同的结构。要使用模板继承,你可以在模板中使用 {% extends "base_template.html" %}{% block content %}...{% endblock %} 标签。

例如,你可以创建一个基本模板 base_template.html,然后在其他模板中扩展它:

<!-- base_template.html -->
<!DOCTYPE html>
<html>
<head><title>{% block title %}Default Title{% endblock %}</title>
</head>
<body><div id="content">{% block content %}{% endblock %}</div>
</body>
</html>
<!-- other_template.html -->
{% extends "base_template.html" %}{% block title %}Page Title{% endblock %}{% block content %}
<p>This is the content of the page.</p>
{% endblock %}

 6.5 模板过滤器

         Django 模板还支持过滤器,这些过滤器用于对模板中的变量进行处理。过滤器通常用于格式化日期、字符串、数字等。例如,{{ my_date|date:"Y-m-d" }} 将格式化日期。这只是关于 Django 模板的基本概念,Django 提供了丰富的模板语法和功能,用于构建复杂的动态页面。

        总之,Django 是一个完善的 web 框架,适用于各种规模的 web 开发项目,从小型网站到大型企业应用程序。它提供了丰富的功能和工具,让开发人员能够快速构建高质量的 web 应用程序。如果你是 Python 开发人员,并且想要构建功能强大的 web 应用程序,Django 绝对值得考虑。

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

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

相关文章

HTML 标签讲解

HTML 标签讲解 HTML 语言结构根元素元数据元素主体根元素大纲元素文本内容语义化内联文本图像与多媒体编辑标识table表格内容表单内容table表单 HTML 语言结构 Markup &#xff08;标记、标签&#xff09;用来容纳和描述内容 严格意义上&#xff0c;标签是指开始标签&#xf…

华为OD机试 - 关联子串 - 滑动窗口(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明4、换个思路 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A…

vue 打印

vue-print-nb插件使用 vue 打印 vue-print-nb - 简书 1、media print 内样式无效问题 <style lang"scss"> media print {} </style> style上不能加scoped; 2、分页问题 A4纸的长宽&#xff1a;210mm297mm&#xff0c;css中支持mm单位&#xff0c;可…

关于工信部发布的app备案以及小程序备案流程

一、相关政策 通知&#xff1a;https://beian.miit.gov.cn/#/Integrated/lawStatute 腾讯备案&#xff1a;网站备案 首次备案-网站备案-文档中心-腾讯云 阿里备案&#xff1a;网站备案_ICP备案_备案迁移_备案-阿里云 二、遇到的问题 APP备案 安卓获取平台公钥方法&#xf…

数学建模之插值法

目录 1 插值法概述2 插值法原理3 拉格朗日插值4 牛顿插值5 三次Hermite插值&#xff08;重点&#xff09;6 三次样条插值&#xff08;重点&#xff09;7 各种插值法总结8 n 维数据的插值9 插值法拓展10 课后作业 1 插值法概述 数模比赛中&#xff0c;常常需要根据已知的函数点进…

nginx离线安装

ngixn的离线安装(centos7) 需要的依赖 gcc、gcc-c pcre-8.42.tar.gz zlib-1.2.11.tar.gz openssl-1.1.1s.tar.gz perl-5.28.0.tar.gz 在进行nginx离线安装时&#xff0c;首先查看系统是否安装 gcc、gcc-c&#xff0c;若没有进行安装&#xff0c;请先进行安装 gcc -v #查…

【快应用】快应用与网页通信踩坑合集处理

【关键词】 Web、postMessage、onMessage 【问题背景】 快应用中通过web组件加载的h5网页&#xff0c;快应用在和网页进行通信时&#xff0c;经常会遇到网页发送信息给快应用&#xff0c;快应用成功收到&#xff0c;反过来的时候&#xff0c;h5网页就没法收到了。如提示 xxx …

2019CVPR Semantic Graph Convolutional Networks for 3D Human Pose Regression

基于语义图卷积网络的三维人体姿态回归 源码 https://github.com/garyzhao/SemGCN 摘要 在本文中&#xff0c;我们研究了学习图卷积网络&#xff08;GCN&#xff09;回归的问题。GCN的当前体系结构受限于卷积滤波器和共享的变换矩阵为的小感受野。为了解决这些限制&#xff…

Rider 中C#单元测试

使用NUnit.Framework这个包&#xff0c;没有的话可以用nuget去搜索下载。简单的进行单元测试&#xff0c;想要单元测试好像还给需要static函数&#xff0c;慢慢学学C# using System; using NUnit.Framework;namespace client {public class test{[Test]public static void test…

Vue+NodeJS实现邮件发送

一.邮箱配置 这里以QQ邮箱为例,网易邮箱类似. 设置->账号 二.后端服务搭建 index.js const express require(express) const router require(./router); const app express()// 使用路由文件 app.use(/,router);app.listen(3000, () > {console.log(server…

sklearn中的数据集使用

导库 from sklearn.datasets import load_iris 实现 # 加载数据集 iris load_iris() print(f查看数据集&#xff1a;{iris}) print(f查看数据集的特征&#xff1a;{iris.feature_names}) print(f查看数据集的标签&#xff1a;{iris.target_names}) print(f查看数据集的描述…

期货基础知识

一、期货是什么&#xff1f;  期货是与现货相对应&#xff0c;并由现货衍生而来。期货通常指期货合约&#xff0c;期货与现货完全不同&#xff0c;现货是实实在在可以交易的货&#xff08;商品&#xff09;&#xff0c;期货主要不是货&#xff0c;而是以某种大众产品如棉花、大…