前言

Django是一个开放源代码的Web应用框架,由Python写成。它和J2EE一样,采用了MVC的软件设计模式,即模型M,视图V和控制器C。

本文将讲解DJango框架,并从实际应用的角度讲解一个DJango项目,此项目架构的网站可远程获取MySQL数据库数据并展示到网页上。

Django框架 (引用自百度百科)

Django是一个基于MVC构造的框架。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以Django里更关注的是模型(Model)、模板(Template)和视图(Views),称为MTV模式。它们各自的职责如下:

需要说明的是Django将MVC中的视图进一步分解为Django视图和Django模板两个部分,分别决定 “展现哪些数据” 和 “如何展现”。这使得Django的模板可以根据需要随时替换,而不仅仅限制于内置的模板。

至于MVC控制器部分,由Django框架的URLconf来实现。URLconf机制是使用正则表达式匹配URL,然后调用合适的Python函数。URLconf对于URL的规则没有任何限制,你完全可以设计成任意的URL风格,不管是传统的,RESTful的,或者是另类的。

数据存取层的工作任务则是完成ORM表对象到关系数据库表对象的映射。映射建立好之后,在视图层就能通过ORM机制获取数据,并将数据传递到前端页面。在用户访问网站的时候,控制器部分将负责执行指定的视图层函数以显示相关内容给用户。

总体流程

1. 新建Django项目;
2. 执行命令 "python manage.py startapp APP名" 新建App;
3. 在项目包的 settings.py 文件中 INSTALLED_APPS 变量中注册 2 中生成的APP;
4. 在settings.py里设置好编码模式,时区,以及最重要的 - 绑定数据库;
5. 在APP的modules里定义好ORM表对象;
6. 在templates目录内编写模板;
7. 在APP的views里面编写模板显示函数;
8. 在urls.py中关联模板显示函数和URL地址;
9. 发布该网站。

基于Django框架的一个简单数据库网站示例

项目介绍:架设一个简单的网站,它能从本地局域网的另外一台数据库服务器中读取数据并展示在Web页面。

第一步:新建Django项目:

       

新建好的Django项目包含上述文件。其中:

1. settings.py:相关的配置文件
2. urls.py:URLconf,也即URL地址到前端显示函数的映射关系配置文件
3. wsgi.py:与Appach服务器有关,本项目使用自带的服务器软件,因此不去管它
4. templates:模板目录。一般存放与前端显示有关的html页面。
5. manage.py:django提供的一些工具。通过【python manage.py 命令 参数】这样的格式使用。

第二步:shell端执行命令manage.py startapp mysql_movieinfo_show,以新建一个APP - mysql_movieinfo_show:

在mysql_movieinfo_show的APP包中,主要看如下文件:

models.py:定义ORM表对象;
       views:定义页面显示函数(这些函数通常会通过models.py的ORM表对象和数据库建立联系,然后将其传递进templates目录里的前端页面后返回)。

第三步:在项目包的 settings.py 文件中 INSTALLED_APPS 变量中注册 2 中生成的APP:

第四步:在settings.py里设置好编码模式,时区,以及最重要的 - 绑定数据库:

其中各个字段的含义很直观,就不解释了。

第五步:在APP的modules里定义好ORM表对象:

这只是一个简单的示例对象,实际应用中可以指定它对应的具体表名,每列对应的列名等信息。如果不具体指定,则会根据默认规则进行ORM映射。

特别特别要说明的是:如果你的表中没有主键,Django会自动帮你生成一个id字段。而如果原来的表中又没有ID字段的话,就会映射失败。因此,表中最好指定主键吧。

第六步:在templates目录内编写一个模板,它的作用只是简单的显示传递给它的变量(本项目中此变量的内容为从远程数据库中读取到的内容):

关于如何格式化显示传递进前端页面的对象,请自行查阅相关文档。

第七步:在APP的views里面编写模板显示函数(需要进行ORM表对象操作并传递到 6 中创建的模板里):

第八步:在urls.py中关联模板显示函数和URL地址:

其中的url地址族是通过正则表达式指定的。

第九步:在shell端执行命令【python manage.py runserver 0.0.0.0:8000】发布网站:

发布后,局域网内其他的机器可以通过地址【 http://本机IP:8000/movie_info 】来查看数据库服务器的信息了。

小结

Django框架涉及到的知识非常多,MVC中每个模块都可以大书特书。

这个小项目权当是个练手,熟悉下框架,为将来的实际项目做铺垫。

第四篇:Web框架 - Django的更多相关文章

  1. 第一篇web框架

    第一篇web框架 http协议 web应用和web框架 主 文 http协议 HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维 ...

  2. python运维开发(十七)----jQuery续(示例)web框架django

    内容目录: jQuery示例 前端插件 web框架 Django框架 jQuery示例 dom事件绑定,dom绑定在form表单提交按钮地方都会绑定一个onclick事件,所有查看网站的人都能看到代码 ...

  3. Web框架——Django笔记

    Web框架--Django笔记 MVC和MTV MVC:Model.View.Controller MTV:Model.Template.View Django--MTV 1.创建Django程序   ...

  4. Python3.5学习十八 Python之Web框架 Django

    Python之Web框架: 本质:Socket 引用wsgiref创建web框架 根据web框架创建过程优化所得: 分目录管理 模板单独目录 执行不同函数单独存入一个方法py文件 Web框架的两种形式 ...

  5. Web框架django基础篇

    基本配置及学习  路由(Urls).视图(Views).模板(Template).Model(ORM). 简介 Django 是一个由 Python 写成的开放源代码的 Web 应用框架.它最初是被开 ...

  6. [Python笔记]第十六篇:web框架之Tornado

    Tornado是一个基于python的web框架,xxxxx 安装 python -m pip install tornado 第一个Tornado程序 安装完毕我们就可以新建一个app.py文件,放 ...

  7. 利用python web框架django实现py-faster-rcnn demo实例

    操作系统.编程环境及其他: window7  cpu  python2.7  pycharm5.0  django1.8x 说明:本blog是上一篇blog(http://www.cnblogs.co ...

  8. Python之Web框架Django

    Python之Web框架: Django 一. Django Django是一个卓越的新一代Web框架 Django的处理流程 1. 下载地址  Python 下载地址:https://www.pyt ...

  9. web框架---django

    15:31:14一.web框架1.框架:即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演. ...

  10. 【Python之路】第十六篇--Web框架之Tornado

    概述 Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起来有些像web.py 或者 Google 的 webapp,不过为了 ...

随机推荐

  1. 引用MinGW生成的.dll.a后出现的问题

    以前很少调用MinGW的运行时库,现在用到一个项目,用到了glib和gettext等. 遇到了一个问题,折腾了一个下午. gettext的运行时库之一是intl,MinGW只提供了.dll.a,于是参 ...

  2. 【SSH框架】之Struts2系列(二)

    微信公众号:compassblog 欢迎关注.转发,互相学习,共同进步! 有任何问题,请后台留言联 1.Struts2常量配置 (1).Struts2默认常量配置文件路径,如下图: (2).Strut ...

  3. typedef struct 的用法

    typedef struct stu { int age; char name[20]; }stu,*pstu; stu stu1;相当于struct stu stu1; pstu pstu1;相当于 ...

  4. Windows使用问题总结

    1 电脑休眠恢复之后无法识别Wifi无线网络 首先,重启电脑:其次,打开网络和共享中心,点击更改适配器设置:最后,在对应的无线网络连接图标上点击鼠标右键,属性,配置,电源选项,允许计算机关闭此设备以节 ...

  5. 在linux内核中修改TCP MSS值

    MTU: Maxitum Transmission Unit 最大传输单元 MSS: Maxitum Segment Size 最大分段大小 MSS最大传输大小的缩写,是TCP协议里面的一个概念.MS ...

  6. maven常用命令介绍

    mvn 3.0.4 创建maven项目命令  mvn  archetype:generate   -DgroupId=damocles-autocredit -DartifactId=damocles ...

  7. 排序算法(Java实现)

    这几天一直在看严蔚敏老师的那本<数据结构>那本书.之前第一次学懵懵逼逼,当再次看的时候,发觉写的是非常详细,非常的好. 那就把相关的排序算法用我熟悉的Java语言记录下来了.以下排序算法是 ...

  8. PowerDesigner 简单应用(转载)

    PowerDesigner是一款功能非常强大的建模工具软件,足以与Rose比肩,同样是当今最著名的建模软件之一.Rose是专攻UML对象模型的建模工具,之后才向数据库建模发展,而PowerDesign ...

  9. CEPH RGW 设置 user default_placement为ssd-placement,优化100KB-200KB小文件性能,使用户创建的bucket对象放置到 SSD设备的Pool上。

    sudo radosgw-admin metadata get user:tuanzi > user.md.json vi user.md.json #to add ssd-placement ...

  10. jmeter压力测试笔记- HTTP协议

    一.目标 使用jmeter进行HTTP接口压力测试: 命令行方式运行,方便在linux环境运行: 二.面临的问题 支持多环境测试(开发.测试.生产环境) 支持用户数据.线程数.循环次数等配置在运行时自 ...