一步一步理解 python web 框架,才不会从入门到放弃 -- 开始使用 Django
背景知识
要使用 Django,首先必须先安装 Django。
下图是 Django 官网的版本支持,我们可以看到上面有一个 LTS 存在。什么是 LTS 呢?LTS ,long-term support,也就是长期技术支持版的意思。长期技术支持版意味着资料的丰富程度和稳定性会比其他版本的要好。可以看到,目前的长期技术是 1.11,而上一个长期技术支持版是 1.8 ,我们尽量使用 1.11 长期技术支持版,因为企业在做技术选型的时候,选择的往往不是最新的,而是最稳定的。
安装 Django,打开 Django 项目
选定版本之后,安装就一句
pip3 install django==1.11.11
安装完成之后可以查看 Django 版本
django-admin --version
新建 Django 项目
django-admin startproject 项目名称
当然,我们开发 Django 项目的时候,通常会使用 pycharm 这款 IDE。
如上图所示,你可以设置项目存储的路径,然后可以新建一个虚拟环境,也可以选择使用已有的虚拟环境。
新建项目打开之后,你会看到如下图所示的文件结构。
manage.py # 管理Django项目的入口文件
settings.py # 设置相关
urls.py # 路径与函数对应关系
wsgi.py # socket通信相关
__init__.py # 只是为了表明这个文件夹是一个包
Django版,根据不同的路径,返回不同的内容
我们先像上一次那样,一步一步来,熟悉 Django 项目结构。
我们先把路径与函数的对应关系处理好,先在 urls.py 中进行配置。
HttpResponse 模块的引入
在这里,我们需要引进 Django 自带的处理 HTTP 响应的模块 HttpResponse
HttpResponse 模块可以帮我们做 HTTP 协议的响应,我们只需要关心处理用户请求的函数就可以了,而不需要关注协议本身所做的事情。
from django.conf.urls import url # 导入 Django 自带的 HttpResponse 模块,用它来帮我们做HTTP协议的响应
# 这样,我们只需要关心处理用户请求的函数就可以了,而不需要关注协议本身所做的事情
from django.shortcuts import HttpResponse def yimi(request):
# request参数保存了所有和用户浏览器请求相关的数据
# 把想要显示在页面上的内容写到 HttpResponse 函数的括号里面即可
return HttpResponse('<h1>hello,yimi!</h1>') def xiaohei(request):
# request参数保存了所有和用户浏览器请求相关的数据
# 把想要显示在页面上的内容写到 HttpResponse 函数的括号里面即可
return HttpResponse('<h1>hello,xiaohei!</h1>') # 保存了路径与函数的对应关系
urlpatterns = [
url(r'^yimi/$', yimi),
url(r'^xiaohei/$', xiaohei),
]
urls.py
配置好后,如何查看呢?需要运行 Django 项目。
命令行运行 Django 项目:在项目的根目录下(也就是有manage.py的那个目录),运行:
python3 manage.py runserver IP:端口 --> 在指定的IP和端口启动
python3 manage.py runserver 端口 --> 在指定的端口启动
python3 manage.py runserver --> 默认在本机的8000端口启动
pycharm 运行:点击右上角绿色的小三角,直接可以启动Django项目(前提是小三角左边是你的Django项目名)。
运行后,输入 127.0.0.1:8000/xiaohei/ 可以看到正常的运行结果。
可以感受到,使用 Django 框架之后,开发服务端方便了很多。我们只需要做 ①定义函数 ②定义函数和路径的对应关系 这两件事情就可以使得服务端正常响应。
settings配置
settings.py中有几个配置我们必须清楚的。
BASE_DIR 配置
所以,BASE_DIR 也就是......
TEMPLATES 配置
有人可能会纳闷,这里 'DIRS' 为什么不使用字符串拼接的方式呢?原因,你这一个项目在开发的时候用的是 Windows 平台,项目最终都要部署到服务器,服务器却不一定是 Windows 平台的,大部分情况下都是 Linux 平台,Windows 平台和 Linux 平台的路径分隔符是不一样的,所以通过 os 模块函数进行拼接会更好。
STATICFILES_DIRS 静态文件文件夹配置
一个 HTML 通常会有许许多多的 CSS 样式和 js 动画效果,因此会有许许多多的 css 文件和 js 文件,它们通常不会和 HTML 文件放在一起,而是放在一个叫 static 的文件夹中。这个 static 文件夹就叫做静态文件夹。
在项目根目录下新建 static 目录
我们新建了 static 目录用来放静态文件,要想要 Django 帮我们找到这些静态文件,必须先在 settings.py 中告诉它这个文件夹在哪里。
当然,如果你有多个静态文件目录,你也可以写到 STATICFILES_DIRS 里面,Django 会按照你写的目录的先后顺序,从上往下进行静态文件的查找。
返回完整的 HTML 页面
模板的引入
我们在 templates 目录下新建了一个 yimi.html,然后在 urls.py 中通过之前 python 文件读取的方式返回完整的 HTML 页面
可以发现,通过 python 的方式查找文件需要我们自己制定文件路径,过于麻烦
render 模块的引入
这时候,我们可以引入 render 模块,让 Django 自己去帮我们找 HTML 文件
from django.conf.urls import url # 导入 Django 自带的 HttpResponse 模块,用它来帮我们做HTTP协议的响应
# 这样,我们只需要关心处理用户请求的函数就可以了,而不需要关注协议本身所做的事情
from django.shortcuts import HttpResponse, render # 要返回一个完整的HTML文件,就需要用到render模块 def yimi(request):
# request参数保存了所有和用户浏览器请求相关的数据
# 把想要显示在页面上的内容写到 HttpResponse 函数的括号里面即可
# with open('./templates/yimi.html', 'r', encoding='utf-8') as f:
# data = f.read()
# return HttpResponse('<h1>hello,yimi!</h1>') # render的第一个参数是request,第二个参数是我们想要返回的HTML文件名字
# 这个文件的路径就是之前在settings.py中配置好的 templates
return render(request, 'yimi.html') def xiaohei(request):
# request参数保存了所有和用户浏览器请求相关的数据
# 把想要显示在页面上的内容写到 HttpResponse 函数的括号里面即可
return HttpResponse('<h1>hello,xiaohei!</h1>') # 保存了路径与函数的对应关系
urlpatterns = [
url(r'^yimi/$', yimi),
url(r'^xiaohei/$', xiaohei),
]
urls.py
静态文件的引入
你可能会问:“我写了一个超级好看的页面,把它的 css 独立出来,放在 Django 项目的根目录下了,应该怎么在 HTML 页面中引进来呢?”
只需下图所示一步即可
views.py 文件的引入
到这里,你可能会发现一些问题。
例如,我们现在的全部逻辑处理函数 和 函数与路径的对应关系,都是写在 urls.py 中的,随着我们项目的发展壮大,我们需要的处理函数将会越来越多,将处理函数与函数路径的对应关系写在一个文件中,将会大大影响我们对程序的理解。
因此,我们现在要将我们自己写的 逻辑处理函数 和 函数与路径的对应关系 分离开,分成独立的文件。一个专门用来写逻辑处理函数,用于处理客户端发过来的请求;另一个则专门用来写函数与路径的对应关系。
在 项目同名 APP 目录下新建一个 views.py 文件,把原来在 urls.py 中写的逻辑处理函数全部移到 views.py 中。
urls.py 文件中需要导入我们写的那些逻辑函数。
这样下来,Django 项目中各个文件的关系也就清晰多了,而且,我不会告诉你,到现在,你已经接触到了 Django MTV 框架的精髓的哦^_^
下节预告
到这里,相信你也已经成功地安装了 Django ,并熟悉了 HttpResponse 模块、render 模块的使用,还有 settings 中 BASE_DIR、TEMPLATES、STATICFILES_DIRS 的配置,知晓了为什么要把 views 和 urls 文件进行分离。
下一节,我们将通过一个用户登录页面,来进一步学习 Django 的使用,体会 Django 的魅力所在。
作者: 守护窗明守护爱
出处: https://www.cnblogs.com/chuangming/p/9076721.html
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出。如有问题,可邮件(1269619593@qq.com)咨询.
一步一步理解 python web 框架,才不会从入门到放弃 -- 开始使用 Django的更多相关文章
- 一步一步理解 python web 框架,才不会从入门到放弃
要想清楚地理解 python web 框架,首先要清楚浏览器访问服务器的过程. 用户通过浏览器浏览网站的过程: 用户浏览器(socket客户端) 3. 客户端往服务端发消息 6. 客户端接收消息 7. ...
- 一步一步理解 python web 框架,才不会从入门到放弃 -- 简单登录页面
上一节,我们基本了解了 Django 的一些配置,这一节,我们将通过一个简单的登录页面,进一步学习 Django 的使用. 新建项目 首先,新建一个 Django 项目,记得别弄错了哦. settin ...
- python web框架Flask——csrf攻击
CSRF是什么? (Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一,也被称为“One Click ...
- 一文读懂Python web框架和web服务器之间的关系
我们都知道 Python 作为一门强大的语言,能够适应快速原型和较大项目的制作,因此被广泛用于 web 应用程序的开发中. 在面试的过程中,大家或多或少都被问到过这样一个问题:一个请求从浏览器发出到数 ...
- python web框架介绍对比
Django Python框架虽然说是百花齐放,但仍然有那么一家是最大的,它就是Django.要说Django是Python框架里最好的,有人同意也有人 坚决反对,但说Django的文档最完善.市场占 ...
- “脚踢各大Python Web框架”,Sanic真有这能耐么?
在Github上,Sanic第一句介绍语就是: "Sanic is a Flask-like Python 3.5+ web server that's written to go fast ...
- python三大web框架Django,Flask,Flask,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架
Python几种主流框架 从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python We ...
- Python Web框架Tornado的异步处理代码演示样例
1. What is Tornado Tornado是一个轻量级但高性能的Python web框架,与还有一个流行的Python web框架Django相比.tornado不提供操作数据库的ORM接口 ...
- Django,Flask,Tornado三大框架对比,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架
Django 与 Tornado 各自的优缺点Django优点: 大和全(重量级框架)自带orm,template,view 需要的功能也可以去找第三方的app注重高效开发全自动化的管理后台(只需要使 ...
随机推荐
- css3属性(1)
text-transform语法: text-transform : none | capitalize| uppercase| lowercase 参数: none : 无转换发生 capitali ...
- JFreeChart时间轴固定24小时每天刷新
Timeseries时间轴,设置x轴固定长度24小时 xAxis.setFixedAutoRange(3600000 * 2D), 再画出当天24点这一点 Date day = new Date(); ...
- linux中安装程序及账户管理
程序安装及管理 1. Linux 应用程序基础 Linux命令与应用程序的关系 1):文件位置 系统命令:一般在/bin和/sbin目录中,或为Shell内部指令 应用程序:通常在/usr/bin和 ...
- Apache Flink 流处理实例
维基百科在 IRC 频道上记录 Wiki 被修改的日志,我们可以通过监听这个 IRC 频道,来实时监控给定时间窗口内的修改事件.Apache Flink 作为流计算引擎,非常适合处理流数据,并且,类似 ...
- Http 状态码(status code)常用总结
本来计划写一篇浏览器错误码使用的详细总结,近来想了想,第一这不是很深入的知识点.主要还是一种规定:第二对常用的几种的一个使用场景已经有所了解了,所以今天就写一个简单的汇总,并黏贴常用几个错误码的介绍在 ...
- python笔记:#007#变量
变量的基本使用 程序就是用来处理数据的,而变量就是用来存储数据的 目标 变量定义 变量的类型 变量的命名 01. 变量定义 在 Python 中,每个变量 在使用前都必须赋值,变量 赋值以后 该变量 ...
- oracle中通过sql查询sde中图形面积
select st_area(shape) from XAG2011430200000M_DLTB t where objectid=330
- oracle 触发器,当一个表更新或插入时将数据同步至另个库中的某个表中
有两个表分别是 A用户下的 T_SRC_WEATHER_TSPG字段如图, B用户下的t_src_weather 表,如图: 要求,当A用户下的T_SRC_WEATHER_TSPG表有插入或者更新数据 ...
- Spring Boot实战笔记(四)-- Spring常用配置(事件Application Event)
一.事件(Application Event) Spring的事件为Bean和Bean之间的消息通信提供了支持.当一个Bean处理完一个任务之后,希望另一个Bean知道并能做相应的处理,这时我们就需要 ...
- Mysql主从方案的实现
Mysql主从方案介绍 mysql主从方案主要作用: 读写分离,使数据库能支撑更大的并发.在报表中尤其重要.由于部分报表sql语句非常的慢,导致锁表,影响前台服务.如果前台使用master,报表使用s ...