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

news2024/11/18 7:36:59

目录

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.py

INSTALLED_APPS = [
    # ...
    'myapp',
    # ...
]

如下 

 2.5 配置数据库

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

# settings.py

DATABASES = {
    '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 models

class 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 MyModel

admin.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, path

urlpatterns = [
    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 HttpResponse

def 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 render

def 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.coloradmin.cn/o/962712.html

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

相关文章

JUC并发编程---Lock锁

文章目录 什么是Locksynchronized加锁和Lock加锁代码示例synchronized使用Lock加锁 公平锁和非公平锁公平锁&#xff1a;非公平锁&#xff1a;Lock和Synchronized的区别 synchronized 版的生产者和消费者Lock 版的生产者和消费者生产者和消费者出现的问题Condition精准通知和唤…

机器视觉工程师,人学习最大的能力是理解与善于运用,而不是记住能力

谁记得以前记住的元素周期表&#xff0c;谁能记得住乘法口诀。 如果我们去看一眼&#xff0c;就会迅速记起来。再加上我们小学机械般的练习题。再到我们在现实生活中经常用到。 其实我们机器视觉工程师&#xff0c;一定要去看&#xff0c;还要去练习​。实操软件&#xff0c;多…

深度学习-4-二维目标检测-YOLOv5源码测试与训练

本文采用的YOLOv5源码是ultralytics发行版3.1 YOLOv5源码测试与训练 1.Anaconda环境配置 1.1安装Anaconda Anaconda 是一个用于科学计算的 Python 发行版&#xff0c;支持 Linux, Mac, Windows, 包含了众多流行的科学计算、数据分析的 Python 包。 官方网址下载安装包&…

【SQL应知应会】索引 • Oracle版:B-树索引;位图索引;函数索引;单列与复合索引;分区索引

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 本文免费学习&#xff0c;自发文起3天后&#xff0c;会收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习&#xff0c;有基础也有进阶&#xff0c;有MySQL也有Oracle …

面试被打脸,数据结构底层都不知道么--回去等通知吧

数据结构之常见的8种数据结构&#xff1a; -数组Array -链表 Linked List -堆 heap -栈 stack -队列 Queue -树 Tree -散列表 Hash -图 Graph 数据结构-链表篇 Linklist定义&#xff1a; -是一种线性表&#xff0c;并不会按线性的顺序存储数据&#xff0c;即逻辑上相邻…

解码自我注意的魔力:深入了解其直觉和机制

一、说明 自我注意机制是现代机器学习模型中的关键组成部分&#xff0c;尤其是在处理顺序数据时。这篇博文旨在提供这种机制的详细概述&#xff0c;解释它是如何工作的&#xff0c;它的优点&#xff0c;以及它背后的数学原理。我们还将讨论它在变压器模型中的实现和多头注意力的…

设计模式-10--多例模式(Multition pattern)

一、什么是多例模式&#xff08;Multition pattern&#xff09; 多例模式&#xff08;Multition pattern&#xff09;是单例模式的一种扩展&#xff0c;它属于对象创建类型的设计模式。在多例模式中&#xff0c;一个类可以有多个实例&#xff0c;并且这些实例都是该类本身。因…

实现不同局域网间的文件共享和端口映射,使用Python自带的HTTP服务

文章目录 1. 前言2. 本地文件服务器搭建2.1 python的安装和设置2.2 cpolar的安装和注册 3. 本地文件服务器的发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 数据共享作为和连接作为互联网的基础应用&#xff0c;不仅在商业和办公场景有广泛的应用…

设计模式-5--适配器模式(Adapter Pattern)

一、什么是适配器模式&#xff08;Adapter Pattern&#xff09; 适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许将一个类的接口转换成客户端所期望的另一个接口。适配器模式主要用于解决不兼容接口之间的问题&#xff0c;使得原本…

Windows安装jdk

Windows安装jdk 小白教程&#xff0c;一看就会&#xff0c;一做就成。 1.准备安装包&#xff08;需要的滴滴我&#xff09; 2.安装 我是在d盘创建jdk目录&#xff0c;把jdk包解压到jdk里 计算机右键---属性---高级系统设置—环境变量 &#xff08;系统变量里&#xff09;--新…

小兔鲜儿 - 地址模块

目录 小兔鲜儿 - 地址模块 准备工作​ 静态结构​ 地址管理页​ 地址表单页​ 动态设置标题​ 新建地址页​ 接口封装​ 参考代码​ 地址管理页​ 接口调用​ 参考代码​ 修改地址页​ 数据回显​ 更新地址​ 表单校验​ 操作步骤​ 删除地址​ 侧滑组件用法…

Leetcode 剑指 Offer II 042. 最近的请求次数

题目难度: 简单 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 写一个 RecentCounter 类来计算特定时间范围内最近的请求。 请实…

4.2 实现基于栈的表达式求值计算器(难度4/10)

本作业主要考察&#xff1a;解释器模式的实现思想/栈结构在表达式求值方面的绝对优势 C数据结构与算法夯实基础作业列表 通过栈的应用&#xff0c;理解特定领域设计的关键作用&#xff0c;给大家眼前一亮的感觉。深刻理解计算机语言和人类语言完美结合的杰作。是作业中的上等…

钉钉机器人消息推送composer拓展 laravel-dingbot

钉钉机器人消息发送 介绍 企业内部有较多系统支撑着公司的核心业务流程&#xff0c;譬如CRM系统、交易系统、监控报警系统等等。通过钉钉的自定义机器人&#xff0c;可以将这些系统事件同步到钉钉的聊天群。 laravel-dingbot 是一款钉钉机器人消息推送的Laravel扩展&#xff…

vscode c语言代码自动格式化

1、在vscode扩展商店里面搜索Clang-format&#xff0c;安装第1个插件 2、快捷键Ctrl逗号&#xff0c;输入format&#xff0c;选择Clang-Format configuration进行配置&#xff08;其实默认就可以&#xff09; 3、vscode打开文件夹的源码&#xff0c;在该文件夹里面新建一个文件…

[前端必看,后端福利❤]如何创建美观的邮件模板并通过qq邮箱的SMTP服务向用户发送

最近在写注册功能的自动发送邮箱告知验证码的功能&#xff0c;无奈根本没有学过前端&#xff0c;只有写Qt的qss基础&#xff0c;只好借助网页设计自己想要的邮箱格式&#xff0c;最终效果如下: 也推销一下自己的项目ShaderLab&#xff0c;可运行ShaderToy上的大部分着色器代码&…

js只保留数组对象的某个属性,合并公共类型的数据,选择树形结构的数据,并保留每个节点的name

嗨&#xff0c;今天周二了哎&#xff01; 期待周五 文章目录 一、js只保留数组对象的某个属性二、合并公共类型的数据二、选择树形结构的数据&#xff0c;并保留每个节点的name 一、js只保留数组对象的某个属性 let data [{ id: 1, name: 哈哈 }, { id: 2, name: 嘻嘻 }]let n…

ModaHub魔搭社区——大模型能力落地和核心就是应用场景

从今年3月百度率先发布语言大模型生成式AI产品“文心一言”后,各大科技互联网巨头纷纷入局,国内大模型瞬间遍地开花。包括阿里、华为、商汤科技、科大讯飞、360、腾讯等,纷纷推出各类大模型。 人工智能正在进入大规模落地应用关键期。 在IDC近日发布的《中国人工智能公有云…

本地虚机Jumpserver使用域名访问报错 使用IP+端口没有错误

背景&#xff1a; 我在本地Windows VMware 15的环境中部署了CentOS7.5&#xff0c;下载jumpserver-offline-installer-v2.28.1-amd64-138.tar.gz并安装部署。 需求&#xff1a; 1、能使用http:ip访问堡垒机。达成&#xff1b; 2、能使用http:域名访问堡垒机。达成&#xff…

FPGA时序分析与约束(2)——时序电路时序

一、前言 在之前的内容中&#xff0c;我们介绍了组合电路的时序问题和可能导致的毛刺&#xff0c;强烈推荐在阅读前文的基础上再继续阅读本文&#xff0c; 前文链接&#xff1a;FPGA时序分析与约束&#xff08;1&#xff09;——组合电路时序 这篇文章中&#xff0c;我们将继续…