【Django 网页Web开发】03. 初识Django(保姆级图文)
目录
- 1. 命令行创建与pycharm创建的区别
- 2. 项目结构信息
- 2.1 项目结构
- 2.2 项目app结构
- 2.3 快速查看项目结构树
- 3. 创建并注册app
- 3.1 创建app
- 3.2 注册app
- 4. 编写URL与视图的对应关系
- 5. 编写视图文件
- 6. 启动项目
- 7. 写多个页面
- 8. templates模板的使用
- 8.1 编写html文件
- 8.3 导入html文件
- 9. 静态文件导入
- 9.1 static目录
- 9.2 引用静态文件
- 9.3 模板语法的介绍与学习
- 10. 实战案例:模拟联通新闻中心
- 10.1 url添加路径
- 10.2 view添加new视图
- 10.3 templates添加html文件
- 总结
欢迎关注 『Django 网页Web开发』 系列,持续更新中
欢迎关注 『Django 网页Web开发』 系列,持续更新中
首先阅读前文创建建一个Django项目,项目名 mysite2,后期创建的app名是app01
** 02. 创建并运行一个Django项目(保姆级图文)**
1. 命令行创建与pycharm创建的区别
特殊说明:
-
命令行,创建的项目是标准的,没有任何其他多余的东西。
-
pycharm,在标准的基础上默认添加了一些东西。
-
创建了一个templates目录(Templates文件夹保存通用应用程序的模板文件)【可以删除确以保后面的学习内容与本教程一致,但是最新版的pycharm好像不会添加,可能跟个人设置有关】
-
settings.py中【可以删除确以保后面的学习内容与本教程一致,DIRS中的模板信息内容】
-
2. 项目结构信息
2.1 项目结构
项目名
├── manage.py 【项目的管理,启动项目、创建app、数据管理】【不要动】【***常常用***】
└── 项目名├── __init__.py├── settings.py 【项目配置】 【***常常修改,包括数据库配置等内容***】├── urls.py 【URL和函数的对应关系】【***常常修改***】├── asgi.py 【异步式,Django3.1的异步不太成熟,一般用的同步多,接收网络请求】【不要动】└── wsgi.py 【同步式,接收网络请求】【不要动】
├ --- app 【创建的应用有多个,一般来说小的功能不会拆分为多个app】- app,用户管理【表结构、函数、HTML模板、CSS】- app,订单管理【表结构、函数、HTML模板、CSS】- app,后台管理【表结构、函数、HTML模板、CSS】- app,网站 【表结构、函数、HTML模板、CSS】- app,API 【表结构、函数、HTML模板、CSS】···········更多app,但是要注意:我们开发比较简洁,用不到多app,一般情况下,项目下创建1个app即可。···········
2.2 项目app结构
├── app01
│ ├── __init__.py 【初始化】
│ ├── admin.py 【固定,不用动】django默认提供了admin后台管理。
│ ├── apps.py 【固定,不用动】app启动类
│ ├── migrations 【固定,不用动】数据库变更记录
│ │ └── __init__.py
│ ├── models.py 【**重要**】,对数据库操作。
│ ├── tests.py 【固定,不用动】单元测试
│ └── views.py 【**重要**】,函数。
2.3 快速查看项目结构树
cd到你的项目路径,cmd命令——>tree
3. 创建并注册app
3.1 创建app
在项目根目录下cmd命令
python manage.py startapp app名字
python manage.py startapp app02
3.2 注册app
- 需要写入的内容:我们app目录下的apps.py就是我们需要导入的设置
- 在setting.py的INSTALLED_APPS中写入
'app02.apps.App02Config'
,输入app02按下tab键会自动补全
4. 编写URL与视图的对应关系
后续我们使用app01,app02仅仅是为了创建演示使用,后面不再使用,还是使用app01。
确保我们的app01已经注册好,我们在url.py中的urlpatterns下写入调用路径,注意路径调用之前要先import 视图
- url.py的内容如下:
from django.contrib import admin
from django.urls import pathfrom app01 import views#导入app01中的视图文件urlpatterns = [# path('admin/', admin.site.urls),# 访问url www.xxx.com/index/ -> 调用函数,也就是我们app的views的内容path('index/', views.index),
]
5. 编写视图文件
在app01的view.py文件下调用响应库,并写入index视图方法
- view.py的内容如下:
from django.shortcuts import render, HttpResponse
# HttpResponse指的是从服务端到客户端的响应消息,调用这个库# Create your views here.
def index(request):return HttpResponse("欢迎使用")
6. 启动项目
-
命令行启动
python manage.py runserver
-
Pycharm启动,点击启动按钮
-
启动后界面是这个样子,不要慌,是因为我们只写了url/index
的视图,没有写url/
的视图,红色框提示我们写了哪几个视图,我们这里只写过一个index的路径
url后加入index即可显示
网页效果如下:
7. 写多个页面
- url.py添加用户列表和添加用户页面的内容如下:
from django.contrib import admin
from django.urls import pathfrom app01 import views#导入app01中的视图文件urlpatterns = [# path('admin/', admin.site.urls),# 访问url www.xxx.com/index/ -> 调用函数,也就是我们app的views的内容path('index/', views.index),path('user/list/', views.user_list),path('user/add/', views.user_add),]
- view.py文件添加两个新视图的内容如下
from django.shortcuts import render, HttpResponse
# HttpResponse指的是从服务端到客户端的响应消息,调用这个库# Create your views here.
def index(request):return HttpResponse("欢迎使用")def user_list(request):return HttpResponse("用户列表")def user_add(request):return HttpResponse("添加用户")
重新运行项目后生效,记得也要添加url路径才会显示!!!
8. templates模板的使用
8.1 编写html文件
实际中我们的视图页面不可能只有几个字,我们通常是一个html文件。
我们需要现在app01下新建文件夹templates,然后在templates中新建我们的html文件
user_list.html内容如下:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>用户列表</title>
</head>
<body>用户列表的html
</body>
</html>
8.3 导入html文件
我们setting.py的INSTALLED_APPS下的顺序调用
- view.py修改:
from django.shortcuts import render, HttpResponse
# HttpResponse指的是从服务端到客户端的响应消息,调用这个库# Create your views here.
def index(request):return HttpResponse("欢迎使用")# def user_list(request):
#
# return HttpResponse("用户列表")
#
# def user_add(request):
#
# return HttpResponse("添加用户")def user_list(request):# 根据app的注册顺序,在每个app下的templates目录中寻找return render(request, "user_list.html")def user_add(request):return render(request, 'user_add.html')
效果如下:
9. 静态文件导入
在开发过程中一般将:
- 图片
- CSS
- js
都会当做静态文件处理。
9.1 static目录
在app目录下创建static文件夹。
9.2 引用静态文件
- user_list.html内容如下:
{% load static %}
{#使用相对路径#}<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="{% static 'plugins/bootstrap-3.4.1/css/bootstrap.css' %}">
</head>
<body><h1>用户列表</h1><img src="{% static 'img/1.png' %}" alt=""><script src="{% static 'js/jquery-3.6.0.min.js' %}"></script>
<script src="{% static 'plugins/bootstrap-3.4.1/js/bootstrap.js' %}"></script>
</body>
</html>
9.3 模板语法的介绍与学习
本质上:在HTML中写一些占位符,由数据对这些占位符进行替换和处理。也就是花括号{{}}
调用数据,如果此前没有vue等语言基础,详情参看我的文章。
【Django 网页Web开发】模板语法(保姆级图文)
10. 实战案例:模拟联通新闻中心
10.1 url添加路径
- url.py
from django.contrib import admin
from django.urls import pathfrom app01 import views#导入app01中的视图文件urlpatterns = [# path('admin/', admin.site.urls),# 访问url www.xxx.com/index/ -> 调用函数,也就是我们app的views的内容path('index/', views.index),path('user/list/', views.user_list),path('user/add/', views.user_add),# 联通新闻中心path('news/', views.news),
]
10.2 view添加new视图
- view.py
from django.shortcuts import render, HttpResponse
# HttpResponse指的是从服务端到客户端的响应消息,调用这个库# Create your views here.
def index(request):return HttpResponse("欢迎使用")def user_list(request):# 根据app的注册顺序,在每个app下的templates目录中寻找return render(request, "user_list.html")def user_add(request):return render(request, 'user_add.html')def news(req):# 1.定义一些新闻(字典或者列表) 或 去数据库 网络请求去联通新闻# 向地址:http://www.chinaunicom.com.cn/api/article/NewsByIndex/2/2021/11/news 发送请求# 第三方模块:requests (pip install requests)import requestsres = requests.get("http://www.chinaunicom.com.cn/api/article/NewsByIndex/2/2021/11/news")#请求获取联通官网的数据data_list = res.json()#转化数据格式print(data_list)return render(req, 'news.html', {"news_list": data_list})#将得到的数据传给html
10.3 templates添加html文件
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1>联通新闻中心</h1>
{{ news_list }}
{#下面使用了字典引用#}
<ul>{% for k,v in news_list.items %}<li>{{ k }} = {{ v }} </li>{% endfor %}
</ul></body>
</html>
总结
大家喜欢的话,给个👍,点个关注!给大家分享更多有趣好玩的Python 网页Web开发知识!
版权声明:
发现你走远了@mzh原创作品,转载必须标注原文链接
Copyright 2023 mzh
Crated:2023-3-1
欢迎关注 『Django 网页Web开发』 系列,持续更新中
欢迎关注 『Django 网页Web开发』 系列,持续更新中
『01. 安装配置Django』
『02. 创建并运行一个Django项目』
『03. 初识Django』
『04. 请求和响应,网页跳转重定向,实战简易表单模拟登陆』
『05. 数据库操作,实战用户管理』
『06. 报错:You have 26 unapplied migration(s). Your project may not work properly until you apply the migra』
『07. 模板语法』
『08. 实战项目:部门和员工管理系统(01)』
『09. 实战项目:员工编辑删除功能与靓号管理(02)』
『10. 实战项目:靓号搜索功能(03)』
『11. 实战项目:分页与页码跳转功能(04)』
『12. 实战项目:分页组件的封装 面向接口编程(05)』
『13. 实战项目:添加用户时的时间选择组件(06)』
『14. 实战项目:一些面向对象的代码结构优化(07)』
『15. 实战项目:管理员增删改查,md5密码和密码重置(08)』
『16. 实战项目:BootStrap类的进一步优化(09)』
『17. 实战项目:login业务涉及cookie、session、中间件(10)』
『18. 实战项目:登录时的验证码(11)』
『19. 实战项目:初识Ajax请求(12)』
『20. 实战项目:Ajax实战之订单管理与弹出对话框(13)』
『21. 实战项目:echart数据图表(14)』
『22. 实战项目:简单的文件上传(15)』
『23. 实战项目:Excel和form和moudleForm的文件上传(16)』
【更多内容敬请期待】
相关文章:

【Django 网页Web开发】03. 初识Django(保姆级图文)
目录1. 命令行创建与pycharm创建的区别2. 项目结构信息2.1 项目结构2.2 项目app结构2.3 快速查看项目结构树3. 创建并注册app3.1 创建app3.2 注册app4. 编写URL与视图的对应关系5. 编写视图文件6. 启动项目7. 写多个页面8. templates模板的使用8.1 编写html文件8.3 导入html文件…...

KubeSphere All in one安装配置手册
KubeSphere All in one安装配置手册 1. 初始化 1.1 配置apt源 # vi /etc/apt/sources.list deb https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb-src https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiversedeb…...
Spring Boot 核心配置文件
Spring Boot 核心配置文件1、application.properties2、application.yml使用建议3、常用配置项服务器配置数据库配置日志配置其他配置4、配置文件的加载顺序5、配置文件的占位符6、配置文件的动态刷新7、配置文件的属性分组定义属性分组绑定属性分组使用属性分组总结Spring Boo…...

个人小站折腾后记
个人小站折腾后记 🏠个人主页:shark-Gao 🧑个人简介:大家好,我是shark-Gao,一个想要与大家共同进步的男人😉😉 🎉目前状况:23届毕业生,目前在某…...

WebService简单入门
1. JAX-WS发布WebService 创建web工程 创建simple包,和server、client两个子包。正常情况下server和client应该是两个项目,这里我们只是演示效果,所以简化写到一个项目中: 1.1 创建服务类Server package simple.server;import ja…...

「Vue面试题」vue要做权限管理该怎么做?如果控制到按钮级别的权限怎么做?
文章目录一、是什么二、如何做接口权限路由权限控制菜单权限方案一方案二按钮权限方案一方案二小结参考文章一、是什么 权限是对特定资源的访问许可,所谓权限控制,也就是确保用户只能访问到被分配的资源 而前端权限归根结底是请求的发起权,…...

Docker部署springcloud项目(清晰明了)
概述 最近在想做个cloud项目,gitee上找了个模板项目,后端使用到 Nacos、Gateway、Security等技术,需要到 Docker 容器部署,在此总结一下,若有不足之处,望大佬们可以指出。 什么是 Docker Docker 使用 Google 公司推…...

搭建SFTP服务安全共享文件,实现在外远程访问「内网穿透」
文章目录1.前言2.本地SFTP服务器搭建2.1.SFTP软件的下载和安装2.2.配置SFTP站点2.3.Cpolar下载和安装3.SFTP服务器的发布3.1.Cpolar云端设置3.2.Cpolar本地设置4.公网访问测试5.结语1.前言 现在的网络发达,个人电脑容量快速上升,想要保存的数据资料也越…...

ChatGPT优化Python代码的小技巧
使用 chatGPT 优化代码并降低运行时的云成本 许多开发人员说“过早的优化是万恶之源”。 这句话的来源归功于Donald Knuth。在他的书《计算机编程的艺术》中,他写道: “真正的问题是,程序员在错误的时间和错误的地方花费了太多时间来担心效率…...

Stm32-使用TB6612驱动电机及编码器测速
这里写目录标题起因一、电机及编码器的参数二、硬件三、接线四、驱动电机1、TB6612电机驱动2、定时器的PWM模式驱动电机五、编码器测速1、定时器的编码器接口模式2、定时器编码器模式测速的原理3、编码器模式的配置4、编码器模式相关代码5、测速方法六、相关问题以及解答1、编码…...
【JS】常用js方法
1、判断是否是数组、字符串等方法a instanceof ba是你需要判断的数据b是判断的类型//直接判断原型 var a [1,5,8] var b 123456console.log(a instanceof Array)//true console.log(a instanceof String)//falseconsole.log(b instanceof String)//true2、分割字符串a.split(…...

Android---动态权限申请
目录 权限分类 动态权限核心函数 简易实现案例 完整代码 Google 在 Android 6.0 开始引入了权限申请机制,将所有权限分成了正常权限和危险权限。App 每次在使用危险权限时需要动态的申请并得到用户的授权才能使用。 权限分类 系统权限分为两类:正常…...

【Linux】环境变量(基本概念 常见环境变量 测试PATH 环境变量相关命令)
文章目录环境变量基本概念常见环境变量测试PATH别的环境变量通过系统调用获取或设置环境变量环境变量相关命令export: 设置一个新的环境变量set: 显示本地定义的shell变量和环境变量unset: 清除环境变量通过代码如何获取环境变量环境变量 基本概念 环境变量(environment vari…...

安全牛+瑞数信息:《数据安全管控平台应用指南》报告共同发布
随着《中华人民共和国网络安全法》《中华人民共和国数据安全法》《中华人民共和国个人信息保护法》和《关键信息基础设施安全保护条例》“三法一条例”的陆续发布,从国家、社会与个人已经逐步形成了加强数据安全保护的态势。 2023年1月中旬,工业和信息化…...

【洛谷刷题】蓝桥杯专题突破-深度优先搜索-dfs(6)
目录 写在前面: 题目:P1683 入门 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述: 输入格式: 输出格式: 输入样例: 输出样例: 解题思路: 代码: AC &a…...

论文解读TCPN
一、简要介绍视觉信息提取(VIE)近年来受到了越来越多的关注。现有的方法通常首先将光学字符识别(OCR)结果组织成纯文本,然后利用标记级实体注释作为监督来训练序列标记模型。但是,它花费大量的注释成本&…...
性能优化之防抖与节流
(一)防抖 (1)定义:单位事件内,频繁触发,只执行最后一次(像王者荣耀的回城操作) (2)使用场景:搜索输入框、手机号邮箱输入检测 &…...
数组模拟单链表
实现一个单链表,链表初始为空,支持三种操作: 向链表头插入一个数; 删除第 k个插入的数后面的数; 在第 k个插入的数后插入一个数。 现在要对该链表进行 M次操作,进行完所有操作后,从头到尾输出整…...
蓝桥杯刷题第十四天
第二题:不同子串题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。一个字符串的非空子串是指字符串中长度至少为 1 的连续的一段字符组成的串。例如,字符串aaab 有非空子串 a, b, aa, ab, aaa, aa…...

面试了8家软件公司测试岗位,面试题大盘点,我真的尽力了
包含的模块:本文分为十九个模块,分别是:软件测试 基础、liunx、MySQL、web测试、接口测试、APP测试 、管理工具、Python、性能测试、selenium、lordrunner、计算机网络、组成原理、数据结构与算法、逻辑题、人力资源需要的可以看文末获取方式…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...

关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...

12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...

Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...