Django 是一个由 Python 编写的一个开放源代码的 Web 应用框架。
使用 Django,只要很少的代码,Python 的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的 Web 服务 Django 本身基于 MVC 模型,即 Model(模型)+ View(视图)+ Controller(控制器)设计模式,MVC 模式使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。
MVC优势:
Python 加 Django 是快速开发、设计、部署网站的最佳组合。
特点
MVC 模式(Model–view–controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。
MVC 以一种插件式的、松耦合的方式连接在一起。
Django 的 MTV 模式本质上和 MVC 是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同,Django 的 MTV 分别是指:
除了以上三层之外,还需要一个 URL 分发器,它的作用是将一个个 URL 的页面请求分发给不同的 View 处理,View 再调用相应的 Model 和 Template,MTV 的响应模式如下所示:
解析:
用户通过浏览器向我们的服务器发起一个请求(request),这个请求会去访问视图函数:
视图函数把返回的数据填充到模板中空格中,最后返回网页给用户。
参考地址:
在一般情况下,计算机都是不会自带Django的,即使安装了python也是,需要自己安装。
Django是以python开发的,因此要先保证系统上已经安装了python,如果还未入门python,请移步至
,基本入门之后,再来学习Django才容易些。
安装Django最贱的方法就是跟安装python库一样,使用pip命令安装即可。
pip install Django
安装好之后,先进入python的交互模式中,查看一下Django的版本。
>>import django
>>print(gjango.get_version)
2.2.3
首先创建一个放项目的文件夹,比如my_project,在这个文件下打开cmd,输入一下命令:
django-admin startproject project0
project0是项目名称,看一些目录,多了一个project0的文件,查看下项目的目录结构:
|-- project0
| |-- __init__.py
| |-- asgi.py
| |-- settings.py
| |-- urls.py
| `-- wsgi.py
`-- manage.py
目录说明:
接下来我们进入 project0 目录输入以下命令,启动服务器:
python manage.py runserver
打开浏览器输入网址:http://127.0.0.1:8000/,如果正常启动,输出结果如下:
就这样,已经实现了一个最基本的网页了,这是django的欢迎页面,看到这里说明之前的所有操作基本上都是正确的。
那么怎么样开发自己的页面呢?这就要从“应用”(application)开始说起。
还是在刚刚的目录中,即manage.py文件同级目录下进入cmd,输入一下命令:
python manage.py startapp helloword
“hello word”是所有程序员的传统,这里就用他来为第一个应用取名,然后会多出来一个hello word文件夹,查看一下目录结构:
project0
│ db.sqlite3
│ manage.py
│
├─helloword
│ │ admin.py
│ │ apps.py
│ │ models.py
│ │ tests.py
│ │ views.py
│ │ __init__.py
│ │
│ └─migrations
│ └─ __init__.py
│
└─project0
│ settings.py
│ urls.py
│ wsgi.py
└─ __init__.py
目录hello word
是刚创建出来的app,用来放置博客文章相关的代码:后台管理文件admin.py
,数据模型文件models.py
,视图文件views.py
,存放数据迁移文件的目录migrations
。
目前只需要了解的就这么多,后面的章节都会用到。剩下还有一些没讲到的文件可以暂时不管它,碰到时再查资料。
我们需要告诉Django我们刚创建了我们自己的一个APP,打开project0下的settings.py,找到INSTALLED_APPS
写入如下代码:
project0/settings.py
INSTALLED_APPS = [
# 其他代码
...
# 新增'article'代码,激活app
'article',
]
然后再给app配置访问路径url。
url可以理解为访问网站时输入的网址链接,配置好url后Django才知道怎样定位app。
打开project0
目录下的urls.py
,增加以下代码:
#project0/urls.py
from django.contrib import admin
# 记得引入include
from django.urls import path, include
# 存放映射关系的列表
urlpatterns = [
path('admin/', admin.site.urls),
# 新增代码,配置app的url
path('hello/', include('helloword.urls', namespace='hello')),
]
记得在顶部引入include
。
path为Django的路由语法:
hello/
分配了app的访问路径;include
将路径分发给下一步处理;namespace
可以保证反查到唯一的url,即使不同的app使用了相同的url(后面会用到)。现在已经把路径hello/
分配给hello word这个app中的urls.py
了,但是在app生成时并没有这个文件,因此需要自己在hello word
文件夹中创建urls.py
,在里面输入:
#helloword/urls.py
# 引入path
from django.urls import path
# 引入视图函数
from . import view
# 正在部署的应用的名称
app_name = 'hello'
urlpatterns = [
# 第一个页面的路由
path('word/',view.hello),
]
打开HelloWorld (app)目录的 view.py 文件,并输入代码:
from django.http import HttpResponse
def hello(request):
return HttpResponse("Hello world ! ")
完成之后重新启动Django,查看效果:
python manage.py runserver
运行成功后,打开浏览器输入网址http://127.0.0.1:8000/hello/word/,效果如下:
**注意:**项目中如果代码有改动,服务器会自动监测代码的改动并自动重新载入,所以如果你已经启动了服务器则不需手动重启。
看到这个项目,基本上就可以说自己开始入门Django了。
Django path() 可以接收四个参数,分别是两个必选参数:route、view 和两个可选参数:kwargs、name。
语法格式:
path(route, view, kwargs=None, name=None)
Django2. 0中可以使用 re_path() 方法来兼容 1.x 版本中的 url() 方法,一些正则表达式的规则也可以通过 re_path() 来实现 。
from django.urls import include, re_path
urlpatterns = [
re_path(r'^index/$', views.index, name='index'),
re_path(r'^bio/(?P\w+)/$', views.bio, name='bio'),
re_path(r'^weblog/', include('blog.urls')),
...
]