Django是一个开源的Web应用框架,由Python写成,基于MVC构造。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以 Django 里更关注的是模型(Model)、
模板(Template)和视图(Views),称为 MTV模式。它们各自的职责如下:
层次 | 职责 |
模型(model):数据存取层 | 处理与数据相关的所有事务:如何存取、验证有效性、包含哪些行为以及数据关系等 |
视图(view):表现层 | 处理与表现相关的决定:如何在页面或其他类型的文档中进行显示 |
模板(template):业务逻辑层 | 存取模型及调取恰当模板的相关逻辑,即模型与模板的桥梁 |
1、设计哲学
Django的主要目的是简便、快速的开发数据库驱动的网站。强调代码复用,多个组件可以很方便的以“插件”形式服务于整个框架。
Django有许多功能强大的第三方插件,甚至可以很方便的开发出自己的工具包,具有很强的可扩展性。它还强调快速开发和DRY(Do Not Repeat Yourself)原则。
2、工作机制
①、用manage .py runserver启动Django服务器时就载入了在同一目录下的settings.py。该文件包含了项目中的配置信息,其中最重要的配置就是ROOT_URLCONF,
它告诉Django哪个Python模块应该用作本站的URLConf,默认的是urls.py;
②、当访问url的时候,Django会根据ROOT_URLCONF的设置来装载URLConf;
③、按顺序逐个匹配URLConf里的URLpatterns。如果找到则会调用相关联的视图函数,并把HttpRequest对象作为第一个参数(通常是request);
④、最后该view函数负责返回一个HttpResponse对象;
Django框架更新较为频繁,每个版本之间总是有些差异的,因此可以根据下面的python和Django匹配情况选择版本进行安装。
Django对python各版本的支持情况如下表:
Django version | Python version |
1.8 | 2.7,3.3,3.4,3.5 |
1.9,1.10 | 2.7,3.4,3.5 |
1.11 | 2.7,3.4,3.5,3.6 |
2.0 | 3.5+ |
PS:由于Python2.7版本预计2020年之后将不再维护,所以我使用的是Python3.6.2版本,Django为2.0版本。
安装方式:
①、通过pip命令进行安装:
pip install django(默认为Django最新版本)
pip install django==2.0.2(Django截至目前最新版本,这里只是为了方便演示,安装自己需要的版本),更多相关资料可参考这里:Django
②、通过下载安装文件进行安装:
django官方网站:https://www.djangoproject.com/
python官方仓库:https://pypi.python.org/pypi/Django
1、新建一个项目
通过cmd命令,新建一个目录Test
目录结构如下:
__init__.py:让Python把该目录当成一个标准的开发包;
settings.py:django项目的配置文件;
urls.py:django项目的URL配置文件;
wsgi.py:wsgi是Python语言定义的web服务器,为项目提供的一种服务接口;
manage.py:命令行工具,可以用多种方式与该django项目进行交互;
2、创建并运行应用
①、通过cmd命令,在Test项目下新建一个应用webdev:
应用目录如下:
migrations/:记录models中的数据变更;
admin.py:映射models中的数据到admin后台;
apps.py:对创建的应用进行配置,比如新增文件;
models.py:Django模型文件,创建应用程序的数据表模型;
tests.py:创建测试用例;
views.py:Django视图文件,控制向前端页面传输的内容;
②、通过cmd命令运行项目:
默认情况下,会在8000端口启动一个本地服务器。当然,如果遇到端口被占用或者其他情况,可以自定义端口,比如上面的命令中,我使用了8001端口、
在浏览器输入127.0.0.1:8001,启动后可以看到如下界面,就说明我们的应用服务成功启动
django设置用户是python manage.py createsuperuser,但是如果忘记密码,那么应该进入shell环境 下修改
python manage.py createsuperuser
使用python manage.py shell
from django.contrib.auth.models import User
user = User.objects.get(username='admin')
user.set_password('new_password')
user.save()
orm有修改
python manage.py makemigrations
python manage.py migrate
获取Userprofile
user = User.objects.get(id=1)