python的web开发框架django_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

{% block title %}{% endblock %}</title>

My helpful timestamp site

{% block content %}{% endblock %}

{% block footer %}


Thanks for visiting my site.

{% endblock %}

//子模板 current.html

{% extends "base.html" %}

{% block title %}The current time{% endblock %}

{% block content %}

It is now {{ current_date }}.

{% 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

python返回html也可以直接写html文件名,不用加templates

逻辑实现

写页面

//search.html

应用服务

{% for service in servicenames %}

{{ service }}

{% endfor %}

配置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则仅监听本地连接

文章太长了,再分一篇吧,下一篇记录一些技巧和参考资料

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值