目录
? ? Django的发展始于2003年,最初由一个负责创建和维护报纸网站的网络团队开发。这个团队在创建了许多网站后,开始考虑并重用许多常见的代码和设计模式,从而共同编写了一个通用的Web开发框架。在2005年7月,他们将这个框架作为开源软件发布,命名为“Django”。
? ? Django的命名来源于比利时的爵士音乐家Django Reinhardt,作者希望Django能够优雅地开发功能丰富的Web应用。随着时间的推移,Django不断发展壮大,从2008年9月的第一个里程碑版本(1.0)到最近发布的版本(1.11),每个版本都添加了新功能和错误修复。
??? 由于Django在近年来的广泛,被著名IT开迅速发展,应用越来越发杂志SDTimes评选为2013SDTimes100,位列"API、库和框架"分类第6位,被认为是该领域的佼佼者。
? ? Django框架是一个web框架, 而且是一个后端框架程序, 它不是服务器, 需要注意。Django框架帮我们封装了很多的组件, 帮助我们实现各种功能, 具有很强的扩展性。
? ? Django 提供了通用 Web 开发模式的高度抽象,为频繁进行的编程作业提供了快速解决方法,并为“如何解决问题”提供了清晰明了的约定。Django 通过 DRY(Don't Repeat Yourself,不要重复自己)的理念来鼓励快速开发。
? ? Django 框架支持主流的操作系统平台包括 Windows,Linux,MacOS 等。Python Django 框架是一款全能型框架,它内置了许多模块,极大的方便了 Web 开发者,也正是由于它的“全面性”,会在学习 Django 的时候感到不知该如何处下手。
? ? django具备以下特点:
? ??Django也是一个MVC框架。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为 MTV模式:
? Django安装
pip install django==1.6.11
?注:需要联网安装,版本根据自己需求
Django环境安装
mkvirtualenv django_env -p python3
Django程序创建
django-admin startproject sitename
? 进入创建的项目,?可以运行django提供的建议运行服务器来运行我们添加的代码:?
python manage.py runserver IP地址:端口
? 如果IP地址和端口号不想指定,可以使用系统默认提供的127.0.0.1的ip地址和8000的端口号:? 这时候就可以打开网址了,但默认是美国时间和英文,所以不是很方便,需要的话可以在项目的settings文件中,?我们把它改为亚洲/上海时间和中文。
? ? 常用命令?
代码 | 功能 |
python manage.py runserver ip:port | 启动服务器,默认ip和端口为http://127.0.0.1:8000/ |
python manage.py startapp appname | ?新建 app |
python manage.py syncdb | 同步数据库命令,Django 1.7及以上版本需要用以下的命令 |
python manage.py makemigrations | 显示并记录所有数据的改动 |
python manage.py migrate | ?将改动更新到数据库 |
python manage.py createsuperuser | ?创建超级管理员 |
python manage.py dbshell | ?数据库命令行 |
python manage.py | 查看命令列表 |
? ? 在日常开发中, 我们会经常使用重复的代码, 所以我们可以对代码进行封装, 在不同的地方进行调用. 同理: 如果一个项目中我们有很多的重复业务功能, 我们是否也可以对这些业务功能进行封装, 创建一个一个相对独立的模块来进行管理呢? 故: django中推出了子应用的概念, 使用子应用来管理各个业务功能, 如果有重复的, 可以方便复制调用。
python manage.py startapp users
?子应用的相关文件作用如下:
? ? 创建子应用后,如果想要使用子应用,我们还需要在setting.py进行配置,将子应用添加到项目中。
创建视图
在子应用的views.py里定义视图
from django.http import HttpResponse
def index(request):
return HttpResponse("hello the world!")
? ? 视图函数的第一个传入参数必须定义,用于接收Django构造的包含了请求数据的HttpReqeust对象,通常名为request。
? ? 视图函数的返回值必须为一个响应对象,不能像Flask一样直接返回一个字符串,可以将要返回的字符串数据放到一个HTTPResponse对象中。?
定义路由?
? ? 在子应用中新建一个urls.py文件用于保存该应用的路由
from django.conf.urls import url
from . import views
urlpatterns = [url(r'^index/$', views.index),]
? ? 在工程总路由demo/urls.py中添加子应用的路由数据?
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^users/', include('users.urls')), ]
? ? 路由的访问流程如下图所示:?
? ? 路由说明:
在视图函数中, 我们可以根据reverse进行反解析,获取当前视图函数的路径。
? ? 配置完成后,就可以进行具体的开发了。?
? ??静态文件我们会放在一个静态(static)文件夹中, 统一管理我们在html页面中调用时,需要指定静态文件的路径,故, Django中提供了一种用于配置静态文件路径的解析方式。静态文件可以放在项目根目录下,也可以放在应用的目录下,由于有些静态文件在项目中是通用的,所以推荐放在项目的根目录下,方便管理。?
? ??项目中的CSS、图片、js以及html等看做静态文件,为了提供静态文件访问路径,我们需要在项目的settings.py文件中配置两个参数:
? ? 在项目根目录下创建static_files目录来保存静态文件:
? ? 在demo/settings.py中修改静态文件的两个参数为static
? ? 此时在static_files添加的任何静态文件都可以使用网址 /static/文件在static_files中的路径 来访问了。