python Web开发框架-Django (1)
来源:互联网 发布:linux for循环某个文件 编辑:程序博客网 时间:2024/06/11 08:35
以前用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, urlurlpatterns = patterns('tulip',//tulip是模块名,作为后续映射路径的共同前缀url(r'^$', 'searchText.index'),)视图逻辑
//searchText.pyfrom django.shortcuts import render_to_responsefrom django.http import HttpResponsedef 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则仅监听本地连接
文章太长了,再分一篇吧,下一篇记录一些技巧和参考资料
1 0
- python Web开发框架-Django (1)
- Python Web开发框架Django
- python web开发框架 - 之 Django Request
- [Python] 使用Django开发Web框架
- python Web开发框架-Django (2)
- Python中Django框架开发web
- python web框架 - Django
- python web框架 Django
- Django--Python Web 框架
- python web框架 Django
- Python Web 框架,第 1 部分: 使用 Django 和 Python 开发 Web 站点(转)
- Python Web 框架,第 1 部分: 使用 Django 和 Python 开发 Web 站点
- Python Web 框架,第 1 部分: 使用 Django 和 Python 开发 Web 站点
- Python Web 框架,第 1 部分: 使用 Django 和 Python 开发 Web 站点
- Python Web 框架,第 1 部分: 使用 Django 和 Python 开发 Web 站点
- Python Web 框架,第 1 部分: 使用 Django 和 Python 开发 Web 站点
- python下的web开发框架-Django,url配置
- python下的web开发框架-Django,建立模型
- 基于nagios的监控环境(五):用Ndoutils将监控信息存库
- centos环境下安装mysql
- 混合渲染概率调度策略
- C++中虚析构函数的作用之误解
- 黑马程序员——Objective-c——Foundation坐标相关和字符串
- python Web开发框架-Django (1)
- 如何在Android user 版本下打开UART log?
- Android SDK Manager资源下载
- Intent中startActivityForResult用法
- 98. 面向对象的LotusScript(十七)之LinkedCollection
- android学习日记一
- 并发集合(六)使用线程安全的NavigableMap
- 如何在MFC中配置CUDA
- Setting up Red Hat 5.4 Xen for SR-IOV using the Intel 82576 GbE