零基础学习Django

1.Django是什么?

jango是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。

1.1.框架介绍

Django是高水准的Python编程语言驱动的一个开源模型.视图,控制器风格的Web应用程序框架,它起源于开源社区。使用这种架构,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。这也正是OpenStack的Horizon组件采用这种架构进行设计的主要原因。另外,在Dj ango框架中,还包含许多功能强大的第三方插件,使得Django具有较强的可扩展性 [1] 。Django 项目源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来。Django 框架的核心组件有:

  1. 用于创建模型的对象关系映射;

  2. 为最终用户设计较好的管理界面;

  3. URL 设计;

  4. 设计者友好的模板语言;

  5. 缓存系统。

1.2架构设计

Django已经成为web开发者的首选框架,是一个遵循 MVC 设计模式的框架。MVC是Model、View、Controller三个单词的简写,分别代表模型、视图、控制器。Django其实也是一个MTV 的设计模式。MTV是Model、Template、View三个单词的简写,分别代表模型、模版、视图 [3] 。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为 MTV模式。它们各自的职责如下:

层次 职责
模型(Model),即数据存取层 处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。
模板(Template),即表现层 处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。
视图(View),即业务逻辑层 存取模型及调取恰当模板的相关逻辑。模型与模板的桥梁。

2.通过创建Django项目来学习Django

2.1前期准备

1.确保安装中安装 Python 编程语言,2.7 系列(至少 2.7.5)或 3.4 版本以上都行。
2.python包管理器(pip)
包管理器,不管是针对 Python 的、针对操作系统的,还是针对其他环境的,是一种自动安装、升
级、配置和删除包的软件,解放了你的双手,无需你自己动手下载、安装和维护软件。
使用 pip 命令运行 pip 试试看。如果提示找不到 pip 命令,说明你要安装 pip。你还要确保自己的系统中安装了下面两个包。执行下述命令,安装 Django 和 Pillow(处理图像的
Python 库):

pip install django==2.1.14
pip install pillow

3.创建并激活虚拟环境
~ Linux/macOS: source venv/bin/activate
~ Windows: "venv/Scripts/activate"

4.集成开发环境
集成开发环境有很多,这里用的是pycharm
5.代码仓库
开发过程中应该把代码纳入版本控制系统(Git),这里不做详细介绍,列出一些常用命令:

  1. git init ---> 将普通文件夹变成版本仓库
  2. git add . ---> 将文件从工作区同步到暂存区
  3. git commit -m '...' ---> 将文件提交到本地仓库
  4. git status / git log
  5. git remote add origin ---> 绑定远端仓库
  6. git push -u origin master ---> 将本地代码推到服务器

2.2创建Django项目

  • 第一种方式:
  1. django-admin startproject django1906

  2. 使用PyCharm打开项目并创建虚拟环境

  3. 安装项目所需依赖项

  4. 运行项目 ~ python manage.py runserver ~ Add Configuration --> + --> Python --> Script Path (

  • 第二种方式:
  1. 用PyCharm创建一个普通的Python项目

  2. 安装Django所需的依赖项 ~ pip install django==2.1.14

  3. 把Python项目变成Django项目 ~ django-admin startproject django1906 .

  4. 运行项目

  • 第三种方式:
  1. 克隆项目到本地 ~ 使用PyCharm的"get from version control" ~ git clone [email protected]:jackfrued/django1906.git

  2. 创建虚拟环境 ~ Linux/macOS: source venv/bin/activate ~ Windows: "venv/Scripts/activate"

  3. 重建依赖项 ~ pip install -r requirements.txt

此时你会发现,你的 Django1906目录中出现了与项目同名的一个目录,在这个目录中你会看到两个内容:
❏ 另一个与项目同名的目录
❏ 一个 Python 脚本,名为 manage.py

我们将把内部那个 Django1906 目录称为项目配置目录。在这个目录中,你会看到 4 个 Python 脚本,下面简单介绍一下:

init.py:一个空 Python 脚本,存在的目的是告诉 Python 解释器,这个目录是一个
Python 包;
❏ settings.py:存放 Django 项目的所有设置;
❏ urls.py:存放项目的 URL 模式;
❏ wsgi.py:用于运行开发服务器和把项目部署到生产环境的一个 Python 脚本
项目目录中有个名为 manage.py 的文件,在开发过程中时常用到。它提供了一系列维护 Django 项目的命令,例如通过它可以运行内置的 Django 开发服务器,可以测试应用,还可以运行多个数据库命令。几乎每个 Django 命令都要调用这个脚本。
你现在就可以使用 manage.py 脚本,执行下述命令试试:

python manage.py runserver

打开 Web 浏览器,输入 URL http://127.0.0.1:8000/。你将看到django成功搭建的网页。
开发服务器随时可以停止,只需在终端或命令提示符窗口中按 CTRL+C 键。

2.3创建Django应用

一个 Django 应用完成一件特殊的任务。一个网站需要多少应用,要视其功能而定。例如,一个项目中可能包含一个投票应用、一个注册应用和一个与内容有关的应用。在另一个项目中,我们可能想复用投票和注册应用,因此可以把它们拿过来用。下面创建polls应用。
在Django项目所在的目录中执行下述命令:

python manage.py startapp polls

startapp 目录在项目的根目录中创建一个新目录,这个目录名为polls,其中包含一些python脚本:
init.py:与前面那个的作用完全一样;
❏ admin.py:注册模型,让 Django 为你创建管理界面;
❏ apps.py:当前应用的配置;
❏ models.py:存放应用的数据模型,即数据的实体及其之间的关系;
❏ tests.py:存放测试应用代码的函数;
❏ views.py:存放处理请求并返回响应的函数;
❏ migrations 目录:存放与模型有关的数据库信息。
views.py 和 models.py 是任何应用中都有的两个文件,是 Django 所采用的设计模式(即“模型-视图-模板”模式)的主要部分。
在动手创建模型和视图之前,必须告诉 Django 项目这个新应用的存在。为此,要修改项目配置目录中的 settings.py 文件。打开那个文件,找到 INSTALLED_APPS 列表,把 polls添加到末尾:

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'polls', ]

为了方便使用呢,我们还可以配置应用文件设置语言时区:
找到全局配置文件找到以下代码并修改

LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Chongqing'

再次运行manage.py,确认Django识别了这个新应用。如果能正常启动服务器,没有任何错误,而且此时可以看到一个中文的django欢迎界面,说明可以执行下一步了。

2.4 编写视图

创建好polls应用后,下面编写一个简单的视图,在这里为了简单起见,暂不使用模型或者模板,而是把一些文本回发给客户端。
打开polls目录里的view.py文件。写入下述代码:

from django.http import HttpResponse
def index(request):
return HttpResponse("hello django!")

这个简单的试图是如何运作的:

❏ 首先,从 django.http 模块中导入 HttpResponse 对象。
❏ 在 views.py 文件中,一个函数就是一个视图。这里我们只编写了一个视图,即 index。
❏ 视图函数至少有一个参数,即一个 HttpRequest 对象,它也在 django.http 模块中。按约定,这个参数名为 request,不过你可以根据自己的意愿随意使用其他名称。
❏ 视图必须返回一个 HttpResponse 对象。简单的 HttpResponse 对象的参数是一个字符串,表示要发给客户端的页面内容。

有了视图还不行,为了让用户能访问视图,要把一个统一资源定位地址(Uniform Resource Loca�tor,URL)映射到视图上
为此,打开项目配置目录中的 urls.py 文件,在 urlpatterns 中添加一行代码:

from polls import views
urlpatterns = [
 path('index', index),
 path('admin/', admin.site.urls),
]

新加的那行代码把根 URL 映射到 rango 应用的 index 视图上。启动开发服务器(python manage.py runserver),访问 http://127.0.0.1:8000 或你指定的其他地址。你将看到 index 视图渲染的输出。

2.5使用模板

2.5.1为什么使用模板?

网站中的不同页面通常使用相同的布局,提供通用的页头(header)和页脚(footer),为用户呈现导航,体现一种一致性。Django 模板能让开发者轻易实现这样的设计要求,而且还能把应用逻辑(视图代码)与表现(应用的外观)区分开。
目前,我们只把一个 URL 映射到一个视图上。然而,Django 框架采用的是“模型-视图-模板”架构。

2.5.2模板是什么

Django 的模板可以理解为构建完整的 HTML 页面所需的骨架。模板中有静态内容(不变的部分),也有特殊的句法(动态内容,即模板标签)。Django 视图会把动态内容替换成真正的数据,生成最终的 HTML 响应。
若想在 Django 应用中使用模板,要创建两个目录,用于存放模板文件。
在 Django 项目配置目录中创建一个名为 templates 的目录。注意,这个目录要与项目的 manage.py 脚本放在同一级。在这个新目录中再创建一个目录名为 polls(建议把各应用的模板放在单独的子目录中。这就是我们在 templates 目录中创建 polls子目录的原因。如果想打包应用,把它分发给其他开发者,这样就便于区分模板属于哪个应用)。
接下来要告诉 Django 你把模板放在什么位置。打开项目的 settings.py 文件,找到 TEMPLATES。为了告诉 Django,模板在何处,我们要修改 DIRS 列表(默认为空)

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates'), ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

2.5.3添加一个模板

模板目录和路径设置好之后,在 templates/polls/ 目录中创建一个文件,命名为 index.html。在这个新文件中写入下述 HTML 代码




    polls



    

Says...

hey there partner!
{{ boldmessage }}

在这里有些内容不是 HTML,而是 {{ boldmessage }} 形式。这是 Django 模板变量。我们可以为这样的变量设值,这样渲染模板后便会显示我们设定的值。为了使用这个模板,我们要调整一下前面编写的 index() 视图,不再分发一个简单的响应对象

def index(request):
# 构建一个字典,作为上下文传给模板引擎
# 注意,boldmessage 键对应于模板中的 {{ boldmessage }}
context_dict = {'boldmessage': "Crunchy, creamy, cookie, candy, cupcake!"}
# 返回一个渲染后的响应发给客户端
# 为了方便,我们使用的是 render 函数的简短形式
# 注意,第二个参数是我们想使用的模板
return render(request, 'rango/index.html', context=context_dict)

首先,构建一个字典,设定要传给模板的数据。然后,调用 render() 辅助函数。这个函数的参数是 request 对象、模板的文件名和上下文字典。render() 函数将把上下文字典中的数据代入模板,生成一个完整的 HTML 页面,作为 HttpResponse 对象返回,分发给 Web 浏览器。
我们已经更新视图,用上了模板。现在启动 Django 开发服务器,然后访问 http://127.0.0.1:8000/polls/。你应该能看到这个简单的 HTML 模板渲染出来了。
到这里我们基本的一个django的小项目就已经创建成功啦。

你可能感兴趣的:(零基础学习Django)