本文开始编写Django系列文章,一来是对之前做过的项目做个总结,二是学习新的知识点,希望能坚持下去。
1.Django是什么?
百度百科:一个开放源代码的Web框架,由Python语言编写......
重点:一个大而全的框架,啥都替你考虑好了。
还有就是读法问题,Django读“姜戈”前面不要加个D,不是读“D姜戈”,当然也有人读“大江狗”,本人还是更喜欢读“姜戈”。
2.MVC/MTV介绍
MVC是众所周知的模式,即:将应用程序分解成三个组成部分:model(模型),view(视图),和 controller(控制 器)。其中:
M——管理应用程序的状态(通常存储到数据库中),并约束改变状态的行为(或者叫做“业务规则”)。
C——接受外部用户的操作,根据操作访问模型获取数据,并调用“视图”显示这些数据。控制器是将“模型”和“视图”隔离,并成为二者之间的联系纽带。
V——负责把数据格式化后呈现给用户。
Django也是一个MVC框架。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为 MTV模式:
M 代表模型(Model),即数据存取层。 该层处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。
T 代表模板(Template),即表现层。 该层处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。
V 代表视图(View),即业务逻辑层。 该层包含存取模型及调取恰当模板的相关逻辑。 你可以把它看作模型与模板之间的桥梁。
这就是个文字游戏,本质和MVC是一样的,换个名字而已


3.Django项目实例
python、pip、编辑器版本请自行安装,推荐安装python3.7 Django2.1 ,pycharm或者vscode
安装之前建议把pip源换成国内的阿里源、豆瓣、清华大学或者其他其中的一个,默认下载速度比较慢。我使用的是阿里源配置如下
[global]
index-url=http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
1.Django安装
pip install django==2.1
查看是否安装成功
python -m django --version
如果这行命令输出了一个版本号,证明你已经安装了此版本的 Django;如果你得到的是一个“No module named django”的错误提示,则表明你还未安装
2.创建项目
命令行cd到一个你想保存项目的目录,执行以下命令创建项目
django-admin startproject mysite
创建成功后项目结构如下
⚙ danlan@bogon ~/Documents/code/mysite tree
.
├── manage.py --项目管理脚本(一个让你用各种命令管理django项目的命令行工具)
└── mysite
├── __init__.py --初始化文件(空的)
├── settings.py --主配置文件
├── urls.py --主路由文件
└── wsgi.py --网格接口
1 directory, 5 files启动确认django项目是否真的创建成功了,启动命令如下:
python manage.py runserver
不指定ip端口的话默认端口为8000
指定端口:python manage/py runserver 8001
启动成功后你将看到如下信息:
⚙ danlan@bogon ~/Documents/code/mysite python3 manage.py runserver Performing system checks… System check identified no issues (0 silenced). You have 14 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. Run 'python manage.py migrate' to apply them. November 12, 2020 - 08:02:20 Django version 2.0.3, using settings 'mysite.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.
警告信息先不用管, 没有进行数据库迁移
现在,服务器正在运行,浏览器访问 http://127.0.0.1:8000/。你将会看到一个“祝贺”页面,随着一只火箭发射,服务器已经运行了。

3.创建第一个app
创建app的命令为:python manage.py startapp polls --来自官网教程
这将会创建一个 polls 目录,它的目录结构大致如下:
⚙ danlan@bogon ~/Documents/code/mysite tree
.
├── db.sqlite3
├── manage.py
├── mysite
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-37.pyc
│ │ ├── settings.cpython-37.pyc
│ │ ├── urls.cpython-37.pyc
│ │ └── wsgi.cpython-37.pyc
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── polls
├── __init__.py
├── admin.py
├── apps.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
└── views.py没有在setting.py中修改数据库,默认是sqlite3 数据库,默认生成迁移目录
1.编写视图

2.编写路由
创建urls.py文件,创建app时不会自动创建

在主路由mysite/urls.py中引入polls.urls

函数 include() 允许引用其它 URLconfs。每当 Django 遇到 :func:~django.urls.include 时,它会截断与此项匹配的 URL 的部分,并将剩余的字符串发送到 URLconf 以供进一步处理。
我们设计 include() 的理念是使其可以即插即用。因为polls应用有它自己的 URLconf( polls/urls.py ),他们能够被放在 "/polls/" , "/fun_polls/" ,"/content/polls/",或者其他任何路径下,这个应用都能够正常工作。
当包括其它 URL 模式时你应该总是使用 include() , admin.site.urls 是唯一例外。
启动应用,用你的浏览器访问 http://localhost:8000/polls/,你应该能够看见 "hello django" ,这是你在 index 视图中定义的

如果你在这里得到了一个错误页面,检查一下你是不是正访问着http://localhost:8000/polls/ 而不应该是 http://localhost:8000/
函数 path() 具有四个参数,两个必须参数:route 和 view,两个可选参数:kwargs 和 name。现在,是时候来研究这些参数的含义了。
path() 参数: route
route 是一个匹配 URL 的准则(类似正则表达式)。当 Django 响应一个请求时,它会从 urlpatterns 的第一项开始,按顺序依次匹配列表中的项,直到找到匹配的项。
这些准则不会匹配 GET 和 POST 参数或域名。例如,URLconf 在处理请求 https://www.example.com/myapp/ 时,它会尝试匹配 myapp/ 。处理请求 https://www.example.com/myapp/?page=3 时,也只会尝试匹配 myapp/。
path() 参数: view
当 Django 找到了一个匹配的准则,就会调用这个特定的视图函数,并传入一个 HttpRequest 对象作为第一个参数,被“捕获”的参数以关键字参数的形式传入。稍后,我们会给出一个例子。
path() 参数: kwargs
任意个关键字参数可以作为一个字典传递给目标视图函数。本教程中不会使用这一特性。
path() 参数: name
为你的 URL 取名能使你在 Django 的任意地方唯一地引用它,尤其是在模板中。这个有用的特性允许你只改一个文件就能全局地修改某个 URL 模式。
3.返回HTML文件
上面给用户返回了一个字符串,实际上这肯定不行,通常我们都是将HTML文件返回给用户
新建templates目录和app目录同级

在template目录下创建index.html,代码如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Django</title>
</head>
<body>
<h1 style="background-color: antiquewhite;color: black">Hello django!</h1>
</body>
</html>修改视图

修改setting.py文件配置templates地址

DIRS 是一个包含多个系统目录的文件列表,用于在载入 Django 模板时使用,是一个待搜索路径
接下来,我们可以重新启动web服务。在浏览器刷新一下,你会看到带有样式的“hello django”






Comments | NOTHING