要使用 Django,首先必须先安装 Django。css
下图是 Django 官网的版本支持,咱们能够看到上面有一个 LTS 存在。什么是 LTS 呢?LTS ,long-term support,也就是长期技术支持版的意思。长期技术支持版意味着资料的丰富程度和稳定性会比其余版本的要好。能够看到,目前的长期技术是 1.11,而上一个长期技术支持版是 1.8 ,咱们尽可能使用 1.11 长期技术支持版,由于企业在作技术选型的时候,选择的每每不是最新的,而是最稳定的。html
选定版本以后,安装就一句python
pip3 install django==1.11.11
安装完成以后能够查看 Django 版本django
django-admin --version
新建 Django 项目浏览器
django-admin startproject 项目名称
固然,咱们开发 Django 项目的时候,一般会使用 pycharm 这款 IDE。服务器
如上图所示,你能够设置项目存储的路径,而后能够新建一个虚拟环境,也能够选择使用已有的虚拟环境。框架
新建项目打开以后,你会看到以下图所示的文件结构。socket
manage.py # 管理Django项目的入口文件 settings.py # 设置相关 urls.py # 路径与函数对应关系 wsgi.py # socket通讯相关 __init__.py # 只是为了代表这个文件夹是一个包
咱们先像上一次那样,一步一步来,熟悉 Django 项目结构。ide
咱们先把路径与函数的对应关系处理好,先在 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), ]
配置好后,如何查看呢?须要运行 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.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 会按照你写的目录的前后顺序,从上往下进行静态文件的查找。
模板的引入
咱们在 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), ]
静态文件的引入
你可能会问:“我写了一个超级好看的页面,把它的 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 的魅力所在。
做者: 守护窗明守护爱
出处: http://www.javashuo.com/article/p-semrlxnv-dm.html
本文版权归做者和博客园共有,欢迎转载,但未经做者赞成必须保留此段声明,且在文章页面明显位置给出。若有问题,可邮件(1269619593@qq.com)咨询.