「Python|网页开发」如何使用Django快速开始进行网页开发:写个Hello World!

news2024/11/24 1:24:46

本文主要介绍如何从零开始借助django框架快速启动一个网页服务器然后进入编写HTML页面的阶段。

文章目录

  • 安装django
  • 创建并启动网页项目
  • 在网页项目中创建一个应用
  • 创建页面并设置好对应关系

安装django

  • DjangoPython的一个第三方库,里面已经将编写网页需要的代码结构都组织好,帮助我们专注于编写网页的内容而不是自己从头搭建一个网页,所以被称为框架
  • 因为Django是python的第三方库,所以用pip安装即可,运行命令python -m pip install Django进行安装。

创建并启动网页项目

  • 首先,我们需要创建文件夹作为网页开发的项目代码目录。在shell (cmd) 中运行以下命令,将在当前所在目录下创建一个叫作mysite的文件夹作为项目代码的存放目录,mysite也将同时作为项目的名称,创建时根据自己的情况和喜好使用自己喜欢的名称即可:
    django-admin startproject mysite

  • 我们进到这个目录中,将看到目录结构如下(Linux使用tree命令,windows使用dir):

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py
  • 注意:内层的目录名mysite可以自行修改成其他名称

  • 现在,我们可以运行以下命令启动网页项目:
    python manage.py runserver

  • 如果开发好项目之后希望同一个局域网的电脑可以访问你的网页,可以使用python manage.py runserver 0.0.0.0:8000,其他人访问http://你电脑的IP地址:8000/就可以访问你的网页了~

  • 你将看到控制台输出如下信息(代表项目已经启动,使用浏览器访问对应IP即可查看网页内容):

Django version 4.1.4, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
  • 于是我们使用浏览器访问http://127.0.0.1:8000/即可看到如下启动页面:
    在这里插入图片描述
    我们的网页服务器就启动完毕了,接下来我们需要知道要在哪里写我们的网页内容。

在网页项目中创建一个应用

现在我们的网页显示的是Django的默认页面,要展示我们自己的页面,需要先建立一个新的应用,运行如下命令:
python manage.py startapp
运行完毕后,项目目录将变成如下结构:

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py
	myapp/
	    migrations/
	    	__init__.py
        __init__.py
	    admin.py
	    apps.py
	    models.py
	    tests.py
	    views.py
  • 注意,我们需要在myapp下创建一个urls.py文件存放只跟这个应用相关的url信息,方便管理。

  • 并且需要在mysite/urls.py中指明哪些网址需要在myapp/urls.py中查找相关信息

  • 以及需要在myapp/urls.py中指明某个网址对应的是views.py中哪段处理数据的代码,而views.py中的数据处理代码会将处理结果与HTML页面(待会我们会创建)关联起来,使得用户访问的时候,可以看到我们在HTML页面里面编写的内容

  • 最后我们需要mysite/setting.py中注册我们的应用,这样django程序才能找到我们新创建的应用。在mysite/setting.py中找到列表变量INSTALLED_APPS,然后在列表中添加我们的应用名称,如下:

INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "myapp", # 新增加的
]

创建页面并设置好对应关系

  • 同样为了方便管理我们的代码文件,我们在myapp/目录下新建一个templates/myapp目录用来存放只跟这个应用相关的HTML网页文件(注意templates下面要有一个跟应用myapp同名的文件夹),并在该目录下新建我们之后要存放想展示内容的HTML文件main.html,完成后整个项目目录结构如下:
mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py
	myapp/
	    migrations/
	    	__init__.py
	    templates/
	    	myapp/
		    	main.html
        __init__.py
	    admin.py
	    apps.py
	    models.py
	    tests.py
	    views.py
  • 然后我们创建处理对应页面数据代码,在myapp/views.py中写入如下内容:
from django.shortcuts import render

# Create your views here.
def main_view(request):
    page_content = {"data": "Hello Django!"}
    return render(request, "myapp/main.html", page_content)
  • 然后,我们创建myapp应用下的urls.py文件,写入以下内容:
from django.urls import path

from . import views

app_name = "myapp"

urlpatterns = [
    path("main", views.main_view, name="myapp-main-view"),
]

目前为止,我们myapp应用里面的网页内容HTML处理数据的代码(views.main_view)还有网址(http://127.0.0.1:8000/myapp/main)以及完成了对应。接下来我们要让Django服务器知道,当出现http://127.0.0.1:8000/myapp的时候,要在myapp应用找找对应的url对应关系

  • 为此,我们将mysite/urls.py修改为如下内容:
from django.contrib import admin
from django.urls import include, path # 新导入了include()函数

urlpatterns = [
    path("admin/", admin.site.urls),
    path('myapp/', include('myapp.urls', namespace='myapp')), # 新增了项目的urls模块与应用的urls模块的对应关系
]

然后我们用浏览器访问http://127.0.0.1:8000//myapp/main,将会看到我们在HTML中直接编写的Hello World!如下:
在这里插入图片描述
如果我们想使用views.pypage_content字典中data字段的值Hello Django!,则需要将main.html中的内容修改为如下:

<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>

<h1>{{data}}</h1>

</body>
</html>

{{data}}jinja模板的写法,简单来说就是用双重花括号{{}}将变量名括起来,网页渲染的时候就会将内容渲染成变量对应的值,非常友好。最后我们可以看到页面变化如下:
在这里插入图片描述
之后我们只要专注修改main.html的内容就可以展示任意我们想要展示的内容了。
快去试试吧~

好书推荐:

  • 流畅的python
  • Python编程 从入门到实践 第2版
  • Python数据结构与算法分析 第2版

好课推荐:

  • 零基础学python
  • python核心技术与实战
  • python自动化办公实战

写文不易,如果对你有帮助的话,来一波点赞、收藏、关注吧~👇

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

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

相关文章

如何更改报表控件 Stimulsoft BI 服务器中的地址和端口?

在本文中&#xff0c;我们将主要讨论如何在 Stimulsoft BI Server 中设置基本参数&#xff0c;具体来说&#xff0c;也就是如何更改服务器的地址和端口&#xff1f; 为什么需要更改服务器地址和端口&#xff1f; 在部署报表服务器时&#xff0c;需要指定其地址&#xff0c;实…

使用Websockets和Vert.x进行实时竞价

翻译: 白石(https://github.com/wjw465150/Vert.x-Core-Manual) 原文地址: https://vertx.io/blog/real-time-bidding-with-websockets-and-vert-x/ 在过去的几年中&#xff0c;用户对网络应用程序的期望发生了变化。在拍卖竞价过程中&#xff0c;用户不再需要按下刷新按钮来检…

【C++】STL — map和set的介绍 + 使用

文章目录&#x1f4d6; 前言1. 键值对的引入⚡2. 树形结构的关联式容器&#x1f31f;3. set的介绍 使用⭐4. map的介绍 使用⭐&#x1f3c1;4.4.1 利用map统计次数&#xff1a;&#x1f3c1;4.4.2 std::map::operator[]&#x1f4d6; 前言 本章将继续学习STL中的两个很重要的…

23.2.2打卡 2023牛客寒假算法基础集训营5 ABCDHKL 最详细的一集

A 这题据说可以贪心写 我为了省事直接upper二分第一个大于x的商品然后向前遍历完事 /* ⣿⣿⣿⣿⣿⣿⡷⣯⢿⣿⣷⣻⢯⣿⡽⣻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠸⣿⣿⣆⠹⣿⣿⢾⣟⣯⣿⣿⣿⣿⣿⣿⣽⣻⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣻⣽⡿⣿⣎⠙⣿⣞⣷⡌⢻⣟⣿⣿⣿⣿⣿⣿⣿…

使用动态创建pinia时报injection “Symbol(pinia)“ not found

前阵发现项目内用pinia报了injection "Symbol(pinia)" not found这个错误&#xff0c;因为前一阵用并没有这个问题。问了相关同事后发现是他新建了节点后调用的&#xff0c;导致的问题。 出现的警告如下图&#xff1a; 这问题排除了比较久&#xff0c;为什么呢&…

python自动化办公--pyautogui控制鼠标和键盘操作

在公司某些工作场景下&#xff0c;需要大量重复的工作&#xff0c;重复的工作完全可以通过python软件的自动化实现&#xff0c;省时省力。本文分享python自动化办公的利器之一--pyautogui&#xff0c;通过pyautogui可以轻松控制鼠标和键盘操作。 PyAutoGUI是一个纯Python的GUI自…

纯滞后系统的大林控制算法

大林控制算法原理早在1968年&#xff0c;美国IBM公司的大林&#xff08;Dahlin&#xff09;就提出了一种不同于常规PID控制规律的新型算法&#xff0c;即大林算法。该算法的最大特点是将期望的闭环响应设计成一阶惯性加纯延迟&#xff0c;然后反过来得到能满足这种闭环响应的控…

Linux服务器之间设置共享目录

前言有时候我们需要在两台linux服务器之间共享资源&#xff0c;例如在服务器A上面部署了一个大文件上传程序&#xff0c;但是需要将文件上传到服务器B的某个目录下面&#xff0c;因为上传大文件&#xff0c;需要先将文件所有分块单独上传到服务器B&#xff0c;然后在服务器B上面…

数字文档管理解决财务部门哪些常见问题?

如今&#xff0c;会计部门实施文档管理和自动化工作流程系统至关重要。这些组织要么缺乏数字系统&#xff0c;要么没有充分利用其文档管理解决方案的潜力。 数字文档管理解决财务部门哪些常见问题&#xff1f; 1.错过提前付款折扣&#xff1a;供应商经常为提前付款提供折扣&am…

虹科教您 | 浅谈现代GNSS模拟中的软件定义架构

随着技术的迭代更新&#xff0c;GPS/GNSS模拟技术也在不断发展进步。在过去&#xff0c;想要进行GNSS仿真基本上只有一种选择&#xff1a;使用固定式或分配式的硬件进行模拟。而如今&#xff0c;带来颠覆性创新的新型软件定义架构正在迅速取代传统的定制架构&#xff0c;这种独…

EvilnoVNC:一款针对组织安全与安全意识培训的网络钓鱼平台

关于EvilnoVNC EvilnoVNC是一款针对组织安全与安全意识培训的网络钓鱼平台&#xff0c;该工具开箱即用&#xff0c;可以帮助各大企业组织对内部员工进行安全意识培训&#xff0c;而且也可以帮助广大研究人员测试和研究网络钓鱼防御技术。 和其他网络钓鱼技术不同的不同之处在…

高并发秒杀的 常见的7种方案

高并发场景在现场的日常工作中很常见&#xff0c;特别是在互联网公司中&#xff0c;这篇文章就来通过秒杀商品来模拟高并发的场景。 本文环境&#xff1a; SpringBoot 2.5.7 MySQL 8.0 X MybatisPlus Swagger2.9.2 模拟工具&#xff1a; Jmeter 模拟场景&#xff1a; 减库…

2.5G网卡调试记录

2.5G网卡调试记录 下载驱动 去https://www.realtek.com/zh-tw/downloads这个网站下载2.5G USB网卡对应的驱动 编译驱动 Makefile中需要进入到内核目录/lib/modules/4.19.232/build中进行内核编译&#xff0c;但是我们的build文件链接已经失效了&#xff0c;并且源文件也删除…

力扣sql简单篇练习(八)

力扣sql简单篇练习(八) 1 修复表中的名字 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # 考察的是字符串函数的用法 SELECT user_id,concat(upper(left(name,1)),lower(substr(name,2))) name FROM Users ORDER BY user_id asc1.3 运行截图 2 订单…

Qt TCP (小型聊天窗口)

实现的具体功能为&#xff1a; 服务器端需要主动监听&#xff0c;可以主动断开连接&#xff0c;可以发送信息给客户端客户端需要输入主机&#xff0c;端口号&#xff0c;需要主动连接&#xff0c;可以主动断开连接&#xff0c;可以发送信息给服务器端服务器端和客户端都能看到聊…

【C++算法图解专栏】一篇文章带你掌握差分算法

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4e3;专栏定位&#xff1a;为 0 基础刚入门数据结构与算法的小伙伴提供详细的讲解&#xff0c;也欢迎大佬们一起交流~ &#x1f4da;专栏地址&#xff1a;https://blog.csdn.net/Newin…

hadoop.fs.FileSystem.get导致OOM的原因和解决方案

问题描述 在调用HDFS获取文件系统的get接口时&#xff0c;指定用户可能会导致OOM问题&#xff0c;示例代码如下&#xff1a; FileSystem fileSystem FileSystem.get(uri, conf, "hadoopuser");问题溯源 该方法源码&#xff1a; 在有缓存的情况下将从Cache中取&a…

Android 11 SystemUI(状态/导航栏)-状态栏下拉时图标的隐藏与通知面板的半透黑色背景

概述 本文续自:Android 11 的状态栏的隐藏 PS 本文虽然同属于SystemUI, 但目前并 没有 打算整理成专橍或撰写一个系列的想法. 仅仅为了记录一些过程, 留下那些容易被遗忘的点滴. 开始下拉时状态栏图标被隐藏 状态橍的图标在用户开始触摸(ACTION_DOWN)后, 会开始展开, 显示扩展…

答题小程序题目批量导入模板以及题库文本格式规范

近期又接到了一个知识竞赛的需求&#xff0c;在开发答题小程序的过程中&#xff0c;遇到了不少难题&#xff0c;但是都一一克服了。凭借多年的答题小程序开发经验&#xff0c;我总结了一下题目批量导入题库文本格式规范。一、答题小程序题目批量导入模板小程序【答题小博士】二…

《数字经济全景白皮书》后疫情时代数字化驱动增长洞察之赛道篇

易观分析&#xff1a;《数字经济全景白皮书》浓缩了易观分析对于数字经济各行业经验和数据的积累&#xff0c;并结合数字时代企业的实际业务和未来面临的挑战&#xff0c;以及数字技术的创新突破等因素&#xff0c;最终从数字经济发展大势以及各领域案例入手&#xff0c;帮助企…