背景知识

要使用 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的更多相关文章

  1. 一步一步理解 python web 框架,才不会从入门到放弃

    要想清楚地理解 python web 框架,首先要清楚浏览器访问服务器的过程. 用户通过浏览器浏览网站的过程: 用户浏览器(socket客户端) 3. 客户端往服务端发消息 6. 客户端接收消息 7. ...

  2. 一步一步理解 python web 框架,才不会从入门到放弃 -- 简单登录页面

    上一节,我们基本了解了 Django 的一些配置,这一节,我们将通过一个简单的登录页面,进一步学习 Django 的使用. 新建项目 首先,新建一个 Django 项目,记得别弄错了哦. settin ...

  3. python web框架Flask——csrf攻击

    CSRF是什么? (Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一,也被称为“One Click ...

  4. 一文读懂Python web框架和web服务器之间的关系

    我们都知道 Python 作为一门强大的语言,能够适应快速原型和较大项目的制作,因此被广泛用于 web 应用程序的开发中. 在面试的过程中,大家或多或少都被问到过这样一个问题:一个请求从浏览器发出到数 ...

  5. python web框架介绍对比

    Django Python框架虽然说是百花齐放,但仍然有那么一家是最大的,它就是Django.要说Django是Python框架里最好的,有人同意也有人 坚决反对,但说Django的文档最完善.市场占 ...

  6. “脚踢各大Python Web框架”,Sanic真有这能耐么?

    在Github上,Sanic第一句介绍语就是: "Sanic is a Flask-like Python 3.5+ web server that's written to go fast ...

  7. python三大web框架Django,Flask,Flask,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架

    Python几种主流框架 从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python We ...

  8. Python Web框架Tornado的异步处理代码演示样例

    1. What is Tornado Tornado是一个轻量级但高性能的Python web框架,与还有一个流行的Python web框架Django相比.tornado不提供操作数据库的ORM接口 ...

  9. Django,Flask,Tornado三大框架对比,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架

    Django 与 Tornado 各自的优缺点Django优点: 大和全(重量级框架)自带orm,template,view 需要的功能也可以去找第三方的app注重高效开发全自动化的管理后台(只需要使 ...

随机推荐

  1. 关于并发下内存及CPU使用情况的思考

    鉴于昨天的文章<<使用Interlocked在多线程下进行原子操作,无锁无阻塞的实现线程运行状态判断>>里面有一个封装好的无锁的类库可以判断并发下的结束状况,我们可以完成并发时 ...

  2. WPF中使用后台代码来控制TreeView的选择项(SelectedItem)以及展开节点操作

    首先为TreeView控件制作一个Style: <Style x:Key="LibraryTreeViewItemStyle" TargetType="{x:Typ ...

  3. 添加极光推送以及在ios中的问题

    项目为 ionic1 + angular1 1.添加极光推送插件 用cordova进行添加 cordova plugin add jpush-phonegap-plugin --variable AP ...

  4. Django(三)runserver 命令源码分析

    应用环境 windows7 pycharm2018 profession python3.6 django2.0 我们在pycharm 启动django项目时,常常有这么一个命令操作: python ...

  5. Unsupported major.minor version 51.0 错误解决方案

    jdk1.6工程中使用外部jar包中类出现:Unsupported major.minor version 51.0原因分析:出现上述错误是因为:外部jar包使用jdk1.7(jdk7)编译,而使用此 ...

  6. JVM的运行原理以及JDK 7增加的新特性(一)

    虚拟机(Virtual Machine) JRE是由Java API和JVM组成的.JVM的主要作用是通过Class Loader来加载Java程序,并且按照Java API来执行加载的程序. 虚拟机 ...

  7. 常常搞不清楚SQLServer中的sp_columns来看一看

    The sp_columns catalog stored procedure is equivalent to SQLColumns in ODBC. The results returned ar ...

  8. dijkstra算法:寻找到全图各点的最短路径

    dijkstra算法介绍:即迪杰斯特拉算法,是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题.迪杰斯特拉算法主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止,是一种广度优先 ...

  9. 成功实现在VS2017下编译含<pthread.h>的代码:

    VS2017配置使用#<pthread.h> https://blog.csdn.net/cry1994/article/details/79115394(原来SystemWow64里面存 ...

  10. java之SpringMVC的controller配置总结

    先在springmvc-servlet.xml文件作如下配置(注解开发controller) <?xml version="1.0" encoding="UTF-8 ...