当前位置: 首页 > news >正文

【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…...

个人小站折腾后记

个人小站折腾后记 &#x1f3e0;个人主页&#xff1a;shark-Gao &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是shark-Gao&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f389;目前状况&#xff1a;23届毕业生&#xff0c;目前在某…...

WebService简单入门

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

「Vue面试题」vue要做权限管理该怎么做?如果控制到按钮级别的权限怎么做?

文章目录一、是什么二、如何做接口权限路由权限控制菜单权限方案一方案二按钮权限方案一方案二小结参考文章一、是什么 权限是对特定资源的访问许可&#xff0c;所谓权限控制&#xff0c;也就是确保用户只能访问到被分配的资源 而前端权限归根结底是请求的发起权&#xff0c;…...

Docker部署springcloud项目(清晰明了)

概述 最近在想做个cloud项目,gitee上找了个模板项目&#xff0c;后端使用到 Nacos、Gateway、Security等技术&#xff0c;需要到 Docker 容器部署&#xff0c;在此总结一下&#xff0c;若有不足之处&#xff0c;望大佬们可以指出。 什么是 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.前言 现在的网络发达&#xff0c;个人电脑容量快速上升&#xff0c;想要保存的数据资料也越…...

ChatGPT优化Python代码的小技巧

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

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 开始引入了权限申请机制&#xff0c;将所有权限分成了正常权限和危险权限。App 每次在使用危险权限时需要动态的申请并得到用户的授权才能使用。 权限分类 系统权限分为两类&#xff1a;正常…...

【Linux】环境变量(基本概念 常见环境变量 测试PATH 环境变量相关命令)

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

安全牛+瑞数信息:《数据安全管控平台应用指南》报告共同发布

随着《中华人民共和国网络安全法》《中华人民共和国数据安全法》《中华人民共和国个人信息保护法》和《关键信息基础设施安全保护条例》“三法一条例”的陆续发布&#xff0c;从国家、社会与个人已经逐步形成了加强数据安全保护的态势。 2023年1月中旬&#xff0c;工业和信息化…...

【洛谷刷题】蓝桥杯专题突破-深度优先搜索-dfs(6)

目录 写在前面&#xff1a; 题目&#xff1a;P1683 入门 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述&#xff1a; 输入格式&#xff1a; 输出格式&#xff1a; 输入样例&#xff1a; 输出样例&#xff1a; 解题思路&#xff1a; 代码&#xff1a; AC &a…...

论文解读TCPN

一、简要介绍视觉信息提取&#xff08;VIE&#xff09;近年来受到了越来越多的关注。现有的方法通常首先将光学字符识别&#xff08;OCR&#xff09;结果组织成纯文本&#xff0c;然后利用标记级实体注释作为监督来训练序列标记模型。但是&#xff0c;它花费大量的注释成本&…...

性能优化之防抖与节流

&#xff08;一&#xff09;防抖 &#xff08;1&#xff09;定义&#xff1a;单位事件内&#xff0c;频繁触发&#xff0c;只执行最后一次&#xff08;像王者荣耀的回城操作&#xff09; &#xff08;2&#xff09;使用场景&#xff1a;搜索输入框、手机号邮箱输入检测 &…...

数组模拟单链表

实现一个单链表&#xff0c;链表初始为空&#xff0c;支持三种操作&#xff1a; 向链表头插入一个数&#xff1b; 删除第 k个插入的数后面的数&#xff1b; 在第 k个插入的数后插入一个数。 现在要对该链表进行 M次操作&#xff0c;进行完所有操作后&#xff0c;从头到尾输出整…...

蓝桥杯刷题第十四天

第二题&#xff1a;不同子串题目描述本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。一个字符串的非空子串是指字符串中长度至少为 1 的连续的一段字符组成的串。例如&#xff0c;字符串aaab 有非空子串 a, b, aa, ab, aaa, aa…...

面试了8家软件公司测试岗位,面试题大盘点,我真的尽力了

包含的模块&#xff1a;本文分为十九个模块&#xff0c;分别是&#xff1a;软件测试 基础、liunx、MySQL、web测试、接口测试、APP测试 、管理工具、Python、性能测试、selenium、lordrunner、计算机网络、组成原理、数据结构与算法、逻辑题、人力资源需要的可以看文末获取方式…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...