首页 > 代码库 > Django---强大的Python Web框架
Django---强大的Python Web框架
Django是Python的一个非常强大的Web应用框架, Django的优点主要在于强大的URL路由管理, APP管理, 后台管理, 全套的解决方案(包括session, cache, auth, 模板等), 以及非常丰富的支持文档. 非常适用于快速开发基于MVC的Web应用.
一个Django项目中可以包含多个APP, 使用django-admin.py startproject myProject和django-admin.py startapp myApp1来分别建立Project和APP. 然后,在该project的目录中执行
python manage.py runserver 0.0.0.0:8003即可启动一个Django的web server, 如下图.
可以看出, 新建APP也可以采用这种方式python manage.py startapp myApp2.
Django项目的层级结构也是非常清晰, 每个APP都有各自的目录.
1, 配置文件
主目录myProject, 也可以算是主APP的目录, 里边的settings.py文件包含了该Django项目的所有设置选项, 如
# 项目包含的APP, 在这里可以非常方便做到APP的管理, 可以称得上是热插拔. INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', )
# ROOT_URLCONF是Django项目的根路由文件, 该文件决定了所有的路由配置规则. ROOT_URLCONF = 'myProject.urls' # Template settings, 设置Web前端模板的目录 TEMPLATE_DIRS = ( 'myProject/templates', ) # Static files (CSS, JavaScript, Images) STATIC_URL = '/static/' STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static').replace('\\','/'), )
# Database的设置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mydb1', 'USER': 'mydb1', 'PASSWORD': '123456', 'HOST': '192.168.5.126', 'PORT': 3306, 'OPTIONS': { 'charset': 'utf8', 'use_unicode': True, }, }, }
以上就是该Django项目的配置文件settings.py的内容.
2, 路由规则
Django采用的路由规则非常优雅, 每个APP都有自己独立的urls.py文件来管理这些规则. 格式如下:
urlpatterns = patterns('', url(r'^index/$', views.index), url(r'^result/', include('result.urls')), )url的规则采用正则表达式来进行匹配, url(r‘^index/$‘, views.index) 表示符合 r‘^index/$‘ 匹配规则的链接, 指向views.py下边的index方法.
url(r‘^result/‘, include(‘result.urls‘)) 表示符合 r‘^result/‘ 匹配规则的链接, 会转而去另一个APP result下的urls.py路由文件中查找. 查找原理同上.
from django.conf.urls import patterns, include, url urlpatterns = patterns('result.views', url(r'^queryResults/$', 'queryResults'), url(r'^moreResults/$', 'moreResults'), )
3, 视图views
至于路由规则生效的具体细节, 则全包含在文件views.py中. 这里也是MVC框架特点体现得非常明显的地方.from django.shortcuts import render def index(request): return render(request, 'index.html')该index方法, 会从模板目录中找到index.html, 将其渲染到浏览器.
下边的queryResults方法, 可以用于GET请求的链接: 其作用是从数据库中查询结果, 将其返回给浏览器.
def queryResults(request): ''' @desc: queryResults ''' if request.method == 'GET': if request.session.has_key("userid"): data = http://www.mamicode.com/ResultSerializer(Result.objects.filter(>这样, Web页面上的链接就可以通过urls.py, views.py, 以及Django项目的APP, 非常优雅地呈现出来.
4, 模板template模板目录下包含的是所有的html文件. 其中{% load staticfiles %}是Django的语法, 即加载staticfiles目录里的文件.
(staticfiles是settings.py文件中设置的, ‘django.contrib.staticfiles‘, 其实对应于settings.py中的STATICFILES_DIRS变量指向的目录)
{% load staticfiles %} <!DOCTYPE html> <html lang="en"> ... </html>static目录中, 用于存放项目所需的css, js等资源文件.类似的Django语法还有:
{% extends "base.html" %} {% block content %} <div id="faq-tab-1" class="tab-pane fade"> {% include "results.html" %} </div> {% endblock%}作用是将div制作成一个名字为content的block, 然后在html文件的其他地方可以引用该block. 引用方式为 {% block content %}{% endblock %}.好了, Django Web框架的基本结构介绍到这里. 欢迎大家指正.
在后续的博客中, 将分别介绍Django的其他非常有用的模块.
Django---强大的Python Web框架