python Web开发框架-Django (1)
以前用web.py(另外一款轻量级web开发框架)做一个监控管理平台,没有做特别的记录就不好拾起来。最近做一个日志聚合系统,使用的是django,这次就记下来,方便查询。
Django是一个高效的web开发框架,上手容易,便于调试和发布。
设计模式
它的设计遵循经典的web设计架构-MVC(Model-view-controller),一个应用分为四部分:
- models.py:文件主要用一个 Python 类来描述数据表。 称为 模型(model) 。本文不对model做详细介绍,数据库的存取是单装了mysql,自己做的dao。
- views.py:文件包含了页面的业务逻辑。是模板和模型间的桥梁,接收前端url请求,进行业务逻辑实现,最后返回数据(结果或模板)。
- urls.py:一个配置文件,用于映射 URL到视图。
- xxx.html: html 模板,它描述了页面设计,支持简单的模板语言。
环境准备
python & django,本文使用的是python-2.7.9,django-1.7.6
模板语言
在html中使用模板语言定义页面框架和内容,后台由模板引擎渲染成完整的html。{% %}用于逻辑控制,{{}}用于变量引用
模板间关系
- include:{% include 'nav.html' %},引入布局单元
- 模板继承:定义一个基础模板(定义页面框架),由子模板来继承(填充个性化页面子块)。基础模板使用block标签-{% block %},每个block下的这一块内容将有可能被子模板覆盖。子模板用extends标签来继承基础模板{% extends "base.html" %}。
//base.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<head>
<title><strong>{% block</strong> title <strong>%}{% endblock %}<</strong>/title>
</head>
<body>
<h1>My helpful timestamp site</h1>
{% block content %}{% endblock %}
{% block footer %}
<hr>
<p>Thanks for visiting my site.</p>
{% endblock %}
</body>
</html>
//子模板 current.html
<strong>{% extends "base.html" %} {% block title %}</strong>The current time<strong>{% endblock %}</strong> {% block content %}
<p>It is now {{ current_date }}.</p>{% endblock %}
基本控制标签
- {% if %} {% else %} {% endif %}:支持and/or/not关键字,不支持and/or组合,不支持用圆括号来组合比较操作,不支持 elif
- {% for %}{% endfor %}:循环语法是 for X in Y
- {% ifequal %}{% endifequal %}或者ifnotequal:只有模板变量,字符串,整数和小数可以作为 {% ifequal %} 标签的参数
- {{var|op}}:模板过滤器,在变量被显示前修改它的值。op有lower/upper/length/join等操作
补充:python中空列表、空元组、空字典、空字符串、0、None对象、False对象代表布尔值假,其余都是真布尔值。
相关技术点
前端页面:HTML、JavaScript、HTML DOM、JQuery、ajax、JSON
后端逻辑:python
页面模板:建议网上找基于bootstrap的网页模板
实例流程
项目创建
django-admin.py startproject tulip
获得如下的目录,manage.py/__init__.py/wsgi.py不需要修改,另外手动创建static目录用于保存js/css,创建templates用于保存html模板,创建lib用于保存依赖库
tulip/
manage.py
tulip/
__init__.py
settings.py
urls.py
wsgi.py
static/
templates/
配置修改
我们新增templates/static目录,在模板中想要正确引用,需要修改下django settings.py
BASE_DIR = os.path.dirname(__file__)
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR,'static').replace('\\','/'),
)
TEMPLATE_DIRS = (
os.path.join(BASE_DIR, 'templates').replace('\\','/'),
)
TIME_ZONE = 'Asia/Shanghai' #语言指定为中文
在页面中就可以如下引用js或者css
<script src="/static/js/jquery-1.10.2.js"></script>
<link href="/static/css/bootstrap.css" rel="stylesheet">
python返回html也可以直接写html文件名,不用加templates
逻辑实现
写页面
//search.html
<select id="servicename" class="form-control" onchange="getServiceInfo()">
<option value="">应用服务</option>
{% for service in servicenames %}
<option>{{ service }}</option>
{% endfor %}
</select>
配置urls.py
from django.conf.urls import patterns, include, url
urlpatterns = patterns('tulip',//tulip是模块名,作为后续映射路径的共同前缀
url(r'^$', 'searchText.index'),
)
视图逻辑
//searchText.py
from django.shortcuts import render_to_response
from django.http import HttpResponse
def index(request):
dao = TulipDao()
servicenames = dao.getServicenames()
return render_to_response('search.html', locals())
#或者return render_to_response('search.html',{'servicenames':servicenames})
#locals()返回的字典包含所有局部变量的名称与值的映射
启动应用
python manage.py runserver 0.0.0.0:8000 //0.0.0.0允许任意非本地连接,不指定ip则仅监听本地连接
文章太长了,再分一篇吧,下一篇记录一些技巧和参考资料
python Web开发框架-Django (1)的更多相关文章
- 全面解读Python Web开发框架Django
全面解读Python Web开发框架Django Django是一个开源的Web应用框架,由Python写成.采用MVC的软件设计模式,主要目标是使得开发复杂的.数据库驱动的网站变得简单.Django ...
- 全面解读Python Web开发框架Django,利用Django构建web应用及其部署
全面解读Python Web开发框架Django Django是一个开源的Web应用框架,由Python写成.采用MVC的软件设计模式,主要目标是使得开发复杂的.数据库驱动的网站变得简单.Django ...
- Python Web开发框架Django
花了两周时间,利用工作间隙时间,开发了一个基于Django的项目任务管理Web应用.项目计划的实时动态,可以方便地被项目成员查看(^_^又重复发明轮子了).从前台到后台,好好折腾了一把,用到:HTML ...
- 分分钟教你Python Web开发框架Django
Python除了爬虫.深度学习(人工智能).数据分析等外,还可以用来开发网站系统,如我们常见的知乎,豆瓣等都是用Python开发的网站系统. 今天辰哥就来教大家如何新建属于自己的Django项目,让D ...
- python Web开发框架-Django (2)
接上篇文章,介绍一些实用的技巧和注意点.首次用MarkDown编辑,感觉行空隙太大,不是那么好看. GET/POST 前后端会有数据交互,使用JQuery来实现get/post请求 GET 方法1:通 ...
- 5个最好的Python Web开发框架
Python是最受欢迎的和最有效率的开发语言之一.Python能让你更快完成工作,并且更有效地集成系统.Python是动态的面向对象的语言.即便你刚刚开始学习Python,也立即就能获得生产力上的提升 ...
- 我的第一个python web开发框架(14)——后台管理系统登录功能
接下来正式进入网站的功能开发.要完成后台管理系统登录功能,通过查看登录页面,我们可以了解到,我们需要编写验证码图片获取接口和登录处理接口,然后在登录页面的HTML上编写AJAX. 在进行接口开发之前, ...
- Python web(Django)连接Sql server
(开开心心每一天~ ---虫瘾师) Python Web(Django) 与SQL SERVRE的连接----Come QQ群:607021567(里面有很多开源代码和资料,并且python的游戏也有 ...
- Python Web(Django)与SQL SERVER的连接处理
(开开心心每一天~ ---虫瘾师) Python Web(Django) 与SQL SERVRE的连接----Come QQ群:607021567(里面有很多开源代码和资料,并且python的游戏也有 ...
随机推荐
- sharedpreferences的简单使用
sharedpreferences 以键值对的方式将数据保存在xml 创建:SharePreferences sp = getShareferences(name,context.---) con ...
- java线程池初步理解
多线程基础准备 进程:程序的执行过程,持有资源和线程 线程:是系统中最小的执行单元,同一个进程可以有多个线程,线程共享进程资源 线程交互(同步synchronized):包括互斥和协作,互斥通过对象锁 ...
- 一台MySQL服务器启动多个端口
一台MySQL服务器启动多个端口 在测试Mysql多主一从服务器,即一个从服务器多端口同步不同主库.本文记录了开启不同端口的操作. 详细步骤: 1.首先要先把my.cnf配置文件复制一份,开几个端口要 ...
- Sql Server插入数据并返回自增ID,@@IDENTITY,SCOPE_IDENTITY和IDENT_CURRENT的区别
预备知识:SQLServer的IDENTITY关键字IDENTITY关键字代表的是一个函数,而不是identity属性.在access里边没有这个函数,所以在access不能用这个语句.语法:iden ...
- __attribute__((packed))详解
1. __attribute__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐,是GCC特有的语法.这个功能是跟操作系统没关系,跟编译器有关 ...
- DWG2SHP DXF2SHP 如何把AutoCAD的DWG,DXF文件转换为Esri ArcGIS的Shape文件
dwg是AutoCAD创立的一种图纸保存格式,已经成为二维CAD的标准格式,很多其他CAD为了兼容AutoCAD,也直接使用dwg作为默认工作文件. 地图shape文件由ESRI开发,一个ESRI的s ...
- Web测试基础点
摘自:软件工程师成长之路 1.获取当前使用的Flash播放器版本(Flash Player Version)信息 在浏览器地址栏输入http://www.playerversion.com/,即可显示
- hdu 2896 AC自动机
// hdu 2896 AC自动机 // // 题目大意: // // 给你n个短串,然后给你q串长字符串,要求每个长字符串中 // 是否出现短串,出现的短串各是什么 // // 解题思路: // / ...
- NBUT 1535
题意:往一个塔里放数,取数,找第 k 个大的数 刚开始用 stack 做的,不知道怎样找第 k 个数 又想到用 vector ,以前用过 注释有点多吧 ...... 代码如下: #include&l ...
- video标签无法使用的问题
原因:IIS的MIME中未注册MP4.ogg.webm相关类型,导致IIS无法识别 解决方法:在IIS中注册MP4.ogg.webm类型,以下以MP4为例,ogg和webm以此类推: windows ...