准备工作+1、请求和响应+2、模型和管理站点

Django快速入门——创建一个基本的投票应用程序

  • 准备工作
    • 1、创建虚拟环境
    • 2、安装django
  • 1、请求和响应
    • (1)创建项目
    • (2)用于开发的简易服务器
    • (3)创建投票应用
    • (4)编写第一个视图
      • 1、编写视图函数
      • 2、url映射
      • URLconf文件中指定创建的polls.urls模块
      • 3、运行服务器
      • 函数path()
  • 2、模型和管理站点
    • (1)数据库配置
    • (2)创建模型
    • (3)激活模型
      • 总结步骤
    • (4)初试API
    • (5)介绍Django管理页面
      • 创建一个管理员账号
    • (6)启动开发服务器
    • (7)进入管理站点页面
    • (8)向管理页面加入投票应用
    • (9)体验便捷的管理功能

准备工作

1、创建虚拟环境

开始之前,最好创建一个虚拟环境来管理包。python自带的“venv”工具就够用了(轻量级且快速)
在这里插入图片描述

2、安装django

在这里插入图片描述
检查版本信息
在这里插入图片描述

1、请求和响应

(1)创建项目

自动生成的代码配置一个django 项目(项目实例需要的设置项集合)
包含

  • 数据库配置
  • Django配置
  • 应用程序配置

cd到放置代码的目录,创建项目

django-admin startproject vote(可自定义名称)

创建的目录结构如下
在这里插入图片描述

  • 最外层的 vote/根目录只是你项目的容器,根目录名称对 Django 没有影响,你可以将它重命名为任何你喜欢的名称。
  • manage.py:一个让你用各种方式管理 Django 项目的命令行工具。
  • 里面一层的 vote/目录包含你的项目,它是一个纯 Pyhon包。它的名字就是当你引用它内部任何东西时需要用到的 Python 包名。(比如vote.urls)
  • vote/_init-.py:一个空文件,告诉 Python 这个目录应该被认为是一个Python 包
  • settings.py:Django 项目的配置文件
  • asgi.py:作为你的项目的运行在 ASGI 兼容的 Web 服务器上的入口
  • wsgi.py:作为你的项目的运行在 WSGI兼容的Web服务器上的入口

(2)用于开发的简易服务器

确保项目真实创建

py manage.py runserver

在这里插入图片描述
访问http://127.0.0.1:8000/:
在这里插入图片描述
你已经启动了 Django 开发服务器,这是一个用纯 Python 编写的轻量级网络服务器。我们在 Django 中包含了这个服务器,所以你可以快速开发,而不需要处理配置生产服务器的问题

(3)创建投票应用

项目vs应用
项目可以包含多个应用,应用可以被多个项目使用
在manage.py同级目录下创建投票应用。(作为顶级模块导入:在 Django 中,顶级模块导入意味着你可以直接在项目的任何地方导入这个应用,而不需要使用相对导入)
在这里插入图片描述

(4)编写第一个视图

1、编写视图函数

polls\views.py编写

from django.http import HttpResponse
def index(request):return HttpResponse("hello world.")
  • 这是一个名为 index 的视图函数,它接受一个 request 参数(即 HTTP 请求对象),并返回一个包含 “hello world.” 字符串的 HttpResponse 对象。这个视图函数简单地返回一个 HTTP 响应,显示 “hello world.”。

要看到效果,需要将一个URL映射到它

2、url映射

新建文件 polls\url.py
在这里插入图片描述
在它里面编写

from django.urls import path
from . import views
urlpatterns=[path("",views.index,name="index")
]
  • urlpatterns 是一个列表,包含了一个 path 函数的调用。
  • path 函数用于将 URL 路径映射到视图函数。
  • “” 表示根路径,即 http://yourdomain/。
  • views.index 指定了当用户访问根路径时要调用的视图函数,这里是 index 视图函数。
  • name=“index” 是该 URL 模式的名称,可用于在模板或代码中引用该特定的 URL。

URLconf文件中指定创建的polls.urls模块

from django.contrib import admin
from django.urls import include,pathurlpatterns = [path("polls/",include("polls.urls")),path("admin/", admin.site.urls),
]
  • urlpatterns = [ … ]: 这是一个 URL 配置列表,定义了 URL 与视图函数其他 URL 配置之间的映射关系。
  • path(“polls/”, include(“polls.urls”)): 这条路由规则指定了当用户访问 polls/ 路径时,Django 将会将** 请求传递给 polls 应用程序的 urls.py 文件来处理**。include(“polls.urls”) 表示将 polls 应用程序中定义的 URL 配置引入到主 URL 配置中,允许在 polls 应用程序中定义更复杂的 URL 结构

URLconf 文件通常位于每个应用程序的根目录下,命名为 urls.py。在这个文件中,我们可以使用 Django 提供的 path() 函数来定义 URL 路由规则。每个路由规则包含一个 URL 路径和一个处理该路径的视图函数或另一个 URL 配置(通过 include() 函数引入其他应用程序的 URLconf)

什么时候用到include :当包括其他URL模式时应使用,admin.site.urls(默认的管理后台URL配置)唯一例外

3、运行服务器

py manage.py runserver

访问http://127.0.0.1:8000/polls/(注意 网页不要访问错) 会出现:
在这里插入图片描述

函数path()

path()具有四个参数 两个必须:route & view 。两个可选参数:kwargs & name。

  • path()参数——route
    route 是一个匹配 URL 的准则(类似正则表达式)。当 Django 响应一个请求时,它会从 urlpatterns 的第一项开始,按顺序依次匹配列表中的项,直到找到匹配的项。
    这些准则不会匹配 GET 和 POST 参数或域名。例如,URLconf 在处理请求 https://www.example.com/myapp/ 时,它会尝试匹配 myapp/ 。处理请求 https://www.example.com/myapp/?page=3 时,也只会尝试匹配 myapp/。
    ( ?page=3 只是附加的 GET 参数,Django 不会在 URL 路由匹配中考虑它)

  • path()参数——view
    django找到一个匹配的准则,就会调用这个特定的视图函数。并传入一个HttpRequest对象作为第一个参数,被“捕获”的参数以关键字的形式传入

  • path()参数——kwargs
    任意个关键字参数可以作为一个字典传递给目标视图函数

  • path()参数——name
    为你的URL取名,能够在django的任意地方唯一地引用它,尤其是在模板中。
    (name 参数为 URL 模式提供了一个唯一标识符,方便在视图和模板中引用。
    它支持反向解析,使得生成 URL 更加动态和灵活。
    提高了代码的可读性和可维护性,避免了硬编码 URL 带来的问题)

2、模型和管理站点

(1)数据库配置

vote/settings.py 编辑它之前可以先设置时区

TIME_ZONE = “UTC” 表示 Django 项目使用 UTC 作为默认时区。这对于确保时间处理的一致性和可靠性非常有用,特别是在处理跨时区的应用时。如果需要使用其他时区,可以将 TIME_ZONE 设置为相应的时区名称。(TIME_ZONE = “Asia/Shanghai” # 设置为北京时间)

在这里插入图片描述
默认开启的某些应用需要至少一个数据表,执行

py manage.py migrate

结果:
在这里插入图片描述
在这里插入图片描述

Django的迁移代码本质上是个历史记录,可以用来更新or回滚

(2)创建模型

在django里写一个数据库驱动的Web应用的第一步是定义模型——数据库设计和附加的其他元数据

在这个投票应用中需要创建两个模型,Question & Choice
在这里插入图片描述
这些概念可以通过一个python类来描述 models.py

class Question(models.Model):question_text = models.CharField(max_length=200)pub_date=models.DateField("data published")class Choice(models.Model):question=models.ForeignKey(Question,on_delete=models.CASCADE)choice_text=models.CharField(max_length=200)votes=models.IntegerField(default=0)

在这里插入图片描述

  • ForeignKey 字段用于在两个模型之间建立一对多的关系。通过 ForeignKey,每个 Choice 实例都可以引用一个 Question 实例。这意味着一个问题 (Question) 可以有多个选项 (Choice),但每个选项只能属于一个问题。
  • on_delete=models.CASCADE 参数指定了当关联的 Question 实例被删除时,所有相关的 Choice 实例也会被自动删除。这有助于保持数据一致性,避免孤立的记录

(3)激活模型

在vote\settings.py中 INSTALLED _APPS=[]添加

"polls.apps.PollsConfig"(别打错)

此时Django项目包含了polls应用,接下来将被修改的模型部分储存为一次迁移

py manage.py makemigrations polls 

在这里插入图片描述

关于sqlmigrate:

在这里插入图片描述
接下来,再次运行migrate 命令,在数据库中创建新定义的模型的数据表
在这里插入图片描述

迁移是非常强大的功能,它让你在开发过程中持续的改变数据库结构而不需要重新删除和创建表,使得数据库平滑升级而不丢失数据

总结步骤

  1. 编辑models.py文件,改变or创建模型——>添加应用
  2. 运行py manage.py makemigrations 为模型的改变生成迁移文件
  3. 运行py manage.py migrate 来应用数据库迁移

数据库迁移被分成生成和应用两个命令的原因:
将数据库迁移分为生成和应用两个命令提供了更大的灵活性和控制力,有助于开发者在不同的开发阶段进行细致的管理和操作。通过这种分离,开发者可以生成、审查、测试和应用数据库变更,确保数据库变更过程的安全性、可控性和可追溯性
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(4)初试API

在这里插入图片描述

  • Question.objects.all()会从数据库中获取所有的 Question 对象

在这里插入图片描述
在这里插入图片描述
总之 models.py 新增:
在这里插入图片描述
双下划线__ 是“魔术方法”,可以自动调用

接下来运行py manage.py shell验证修改
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

将第三个创建的 Choice 对象赋值给变量 c,这样可以在后续的代码中直接访问和操作这个对象
在这里插入图片描述

(5)介绍Django管理页面

创建一个管理员账号

py manage.py createsuperuser

在这里插入图片描述

(6)启动开发服务器

Djongo的管理界面默认启用。现在启动开发服务器

py manage.py runserver

登录

http://127.0.0.1:8000/admin/

在这里插入图片描述
可以通过修改settings.py文件 修改显示语言
在这里插入图片描述

在这里插入图片描述

(7)进入管理站点页面

在这里插入图片描述

(8)向管理页面加入投票应用

要告诉管理,问题Question对象需要一个后台接口显示在index页面里
打开polls/admin.py

from django.contrib import admin
from .models import Question
admin.site.register(Question)

(9)体验便捷的管理功能

现在我们向管理页面注册了问题Question类 django将它显示在索引页面
在这里插入图片描述
点击Questions
在这里插入图片描述
点击What’s up?来编辑这个问题
在这里插入图片描述
保存并添加另一个
在这里插入图片描述
在这里插入图片描述
点击历史可以看到修改历史
在这里插入图片描述
未完待续…

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

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

相关文章

家用激光投影仪品牌排行榜:这几个品牌口碑好产品好最适合家用

现在人们生活水平提升,对投影这类产品的认知接受度也提升,有条件的家庭都想在家里整一个家庭影院,对于这些消费者来说挑选一台性价比高的家用投影至关重要,既省到钱又买对了产品;投影市场发展迅速目前市面上大大小小的…

mongo数据库迁移

前言 mongo数据库迁移的方式目前常见的有两种: 1,mongodump与mongorestore 2,mongoimport与mongoexport 二者主要区别有: 1、mongoexport 可以导出json和csv格式, mongodump导出的是bson可读性不如前者 2,…

在Windows 10上快速显示桌面的几种方法,总有一种适合你

序言 有时你需要在Windows 10中快速查看你的桌面,但你不想乏味地最小化每个打开的应用程序窗口,或者移动它们并丢失它们的布局。幸运的是,有几种方法可以让你快速查看桌面,然后从你停止的地方重新开始。 如何使用任务栏按钮显示桌面 假设你正在随意浏览你最喜欢的网站,…

服了,jenkins找不到advanced

新手下载的最新版本,过新手入门的时候一直过不去,就跳过了。 想下载一个汉化,还下载不了。根据提示搜索,结果大家让去advanced找url,也找不到。

FreeRTOS 队列

队列是一种任务到任务、任务到中断、中断到任务数据交流的一种机制。在队列中可以存 储数量有限、大小固定的多个数据,队列中的每一个数据叫做队列项目,队列能够存储队列项 目的最大数量称为队列的长度,在创建队列的时候,就需要指…

揭秘与应对:病毒伪装文件夹的数据恢复策略

在数字时代,数据安全是每个人不可忽视的重要议题。而伪装文件夹,作为一种狡猾的数据安全威胁,正逐渐浮出水面,成为用户需要警惕的对象。这些伪装文件夹看似普通,实则隐藏着不为人知的秘密,它们通过模仿正常…

linux系统操作/基本命令/vim/权限修改/用户建立

Linux的目录结构: 一:在Linux系统中,路径之间的层级关系,使用:/来表示 注意:1、开头的/表示根目录 2、后面的/表示层级关系 二:在windows系统中,路径之间的层级关系,使用:\来表示 注意:1、D:表示…

移动应用性能收集工具原理解析

性能收集分析相关工具总览 收集、分析、展示移动应用性能数据的工具很多,大致可以分为如下几类。例如可收集多项性能指标的移动性能工具,perfdog,Solopi,其中Solopi开源,pefdog商业工具。可进行Crash分析的工具&#x…

猫超卡怎么使用?

天猫超市卡好像只能买天猫的东西 但是有时候淘宝、京东打折比天猫的单价还便宜 这样的话,猫超卡好像也没多大用处 这不,上个月618凑单的东西比在天猫超市买划算多了 最后我直接把猫超卡在收卡云上折现了,超划算

编程学单词:delta(希腊字母Δ/δ)

希腊字母表的第四个字母,大写为Δ,小写为δ。 (笔记模板由python脚本于2024年07月11日 12:32:56创建,本篇笔记适合喜欢写代码,更喜欢鼓捣Python的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.pyth…

算法 | NOIP1999 Cantor表

算法篇——Cantor的数表 - SteveWang - 博客园 (cnblogs.com) #include <bits/stdc.h> using namespace std; int high(int n) {return n*(n1)/2; } int main() {int k;cin>>k;int n1;while(1){if(high(n)>k){break;}n;} int mhigh(n);int wm-k1;if(n%20){cout…

Arcgis Api 三维聚合支持最新版API

Arcgis Api 三维聚合支持最新版API 最近有同学问我Arcgis api 三维聚合&#xff0c;官方还不支持三维聚合API&#xff0c;二维可以。所以依旧是通过GraphicLayers 类来实现&#xff0c;可支持最新Arcgis Api版本 效果图&#xff1a;

《计算机研究与发展》投稿经验

前言 记录下投计研展正刊的经验。跟专刊不同哈&#xff0c;专刊会更快&#xff0c;我看好像也有专刊的经验分享。【计算机研究与发展投稿记录】 期刊简介 来源计研展官网&#xff1a; 《计算机研究与发展》是中国科学院计算技术研究所和中国计算机学会联合主办的学术性期刊&a…

盲人出行体验攻略:蝙蝠避障,点亮前行的明灯

在繁华喧嚣的都市中&#xff0c;每一步都充满了未知与挑战&#xff0c;而对于盲人朋友们来说&#xff0c;出行更是一场无声的冒险。他们凭借着内心的勇气和坚韧的意志&#xff0c;在黑暗中摸索前行&#xff0c;每一步都承载着对生活的热爱与追求。今天&#xff0c;我们要深入探…

FLStudio21.3.12中文破解版本安装包win+mac电脑安装包下载

&#x1f3a4; FL Studio 21中文版&#xff1a;音乐制作新宠&#xff0c;让你的创作起飞&#xff01; 嗨&#xff0c;亲爱的音乐创作者们&#xff01;&#x1f44b;今天要和大家分享一个让我超级兴奋的宝藏软件——FL Studio 21中文版&#xff01;这不仅仅是一款音乐制作软件&…

STM32串口工作原理

STM32的串口是相当丰富的&#xff0c;功能也很强劲。最多可提供5 路串口&#xff0c;有分数波特率发生器、支持单线光通信和半双工单线通讯、支持LIN、智能卡协议和IrDA SIRENDEC 规范(仅串口3支持)、具有DMA等。 串口最基本的设置&#xff0c;就是波特率的设置。STM32的串口使…

移动应用稳定性测试

移动应用稳定性测试 使用Monkey等工具进行移动应用稳定性测试是一种常见的自动化测试方法。Monkey工具可以自动生成各种随机事件来模拟用户操作&#xff0c;从而测试应用在不同情况下的表现。在执行monkey命令后&#xff0c;主要观察以下的结果信息来评估移动应用的稳定性。 崩…

前后端通信 —— HTTP/HTTPS

目录 一、HTTP/HTTPS 简介 1、HTTP 2、HTTPS 二、HTTP 工作过程 三、HTTP 消息 1、HTTP消息结构 2、HTTP消息示例 四、HTTP 方法&#xff08;常用&#xff09; 1、GET 2、POST 3、PUT 4、DELETE 5、GET与POST对比 五、HTTP 状态码&#xff08;常用&#xff09; …

实用调试技巧(Visual Studio)

目录 Debug 和 Release 的区别 F10 --- 逐过程调试 & F11 --- 逐语句调试 F9 --- 新建/切换断点 & F5 --- 开始调试 shift F5 & ctrl F5 Debug 和 Release 的区别 Debug&#xff1a;通常为调试版本&#xff0c;它包含调试信息&#xff0c;并且不作任何优化…

亚信科技基于 Apache SeaTunnel 的二次开发应用实践

亚信科技在Apache SeaTunnel的实践分享 自我介绍 各位同学好&#xff0c;很荣幸通过Apache SeaTunnel社区和大家进行分享交流。我是来自亚信科技的潘志宏&#xff0c;主要负责公司内部数据中台产品的开发。 本次分享的主题是Apache SeaTunnel在亚信科技的集成实践&#xff0c…