Django的web框架入门篇

2022-04-08 13:46:39 浏览数 (1)

django是什么?

Django 是一个高级的 Python 网络框架,可以快速开发安全和可维护的网站。由经验丰富的开发者构建,Django负责处理网站开发中麻烦的部分,因此你可以专注于编写应用程序,而无需重新开发。它是免费和开源的,有活跃繁荣的社区,丰富的文档,以及很多免费和付费的解决方案。

本次分享为Django的web框架入门篇。

Django的优势

  • 完备性

提供开发人员几乎所有想要的"开箱即用"的几乎所有功能。

  • 通用

Django 可以(并已经)用于构建几乎任何类型的网站—从内容管理系统和维基,到社交网络和新闻网站。它可以与任何客户端框架一起工作,并且可以提供几乎任何格式(包括 HTML,Rss源,JSON,XML等)的内容。

  • 安全

Django 可以防范许多漏洞,包括SQL注入,跨站点脚本,跨站点请求伪造和点击劫持。

  • 可维护

Django 代码编写是遵照设计原则和模式,鼓励创建可维护和可重复使用的代码。

  • 可扩展

基于组件的 “无共享” 架构 (架构的每一部分独立于其他架构,因此可以根据需要进行替换或更改). 在不用部分之间有明确的分隔意味着它可以通过在任何级别添加硬件来扩展服务:缓存服务器,数据库服务器或应用程序服务器。

  • 灵活

Django 是用Python编写的,它在许多平台上运行。这意味着你不受任务特定的服务器平台的限制,并且可以在许多种类的Linux,Windows和Mac OsX 上运行应用程序。

Django入门篇

一、django与python版本的对应关系

django版本与python版本存在一定的对应关系,若版本不对应,则会存在一定的兼容问题

二、话不多说 lets start django

1、下载django

  • pip install django

(附录: 笔者这里由于工作使用的django版本原因选择2.2版本,其与当前最新的4.0版本基础功能并无太大区别=_=)

  • python -m django --version

2、认识第一个命令

  • django-admin --help

3、认识第二个命令

  • django-admin startproject mysite

这时候你可以看到在当前目录底下有如下目录结构

  • 1、最外层的mysite/呢 其实是你项目的容器,没啥实际作用 你想要重命名也是ok的 2、里面一层的 mysite/ 目录包含你的项目,它是一个纯 Python 包。它的名字就是当你引用它内部任何东西时需要用到的 Python 包名。(比如 mysite.urls). 3、manage.py: 一个让你用各种方式管理 Django 项目的命令行工具。你可以阅读 django-admin 和 manage.py 获取所有 manage.py 的细节。 4、__init__.py 空文件,告诉 Python 这个目录应该被认为是一个 Python 包 5、settings.py:Django 项目的配置文件 6、mysite/urls.py:Django 项目的 URL 声明, 7、mysite/wsgi.py:作为你的项目的运行在 WSGI 兼容的Web服务器上的入口

4、这个时候执行第三条命令

  • python manage.py startserver

这时候你可以看到这个页面

是不是很激动 一个web服务就这样运行起来了,让我们数一数,才三条命令,是不是感觉超级简单~不过别放松,麻烦的后面才开始呢~

5、好了,开始学习第四条命令了

  • python manage.py startapp polls

这条命令的作用呢 就是在manage.py底下创建一个polls app

这个app的目录结构如图所示

这里就有一些需要解释的概念了, 不过这里我们先卖个关子,先写一小段代码,毕竟 talk is cheap,show me the code。

1、我们先在polls/views.py文件中创建一个函数

2、然后在polls文件夹创建一个urls.py文件夹,这个文件夹写下如下内容

3、最后在mysite的urls.py 中写下如下代码

  • 然后python manage.py runserver
  • 最后访问http://127.0.0.1:8000/polls/

三、总结

好了,不卖关子了,我们刚刚做了三件事情,第一件事情呢是在views.py中添加了一定量的代码,那么问题来了~有谁知道这个文件的作用是什么呢?

如果大家之前有做过web开发相关的专业,可能很快就会回答这里的view肯定就是mvc架构中v(视图层)啦,你看view的翻译还是视图,我真聪明!

但是其实不是这样的,这里的view其实应该相当于mvc架构中的c(controller)层,即控制层,也就是核心逻辑层,django的架构其实是另一种结构MTV架构,M(model)T(template)V(view),model负责数据结构建模,template则是在之前老的前后端不分离的场景一般用来做模板渲染之后的前端页面,现在的使用则是越来越少了,view则是真正意义上的业务逻辑层。

其实这个架构中还缺少一个非常重要的特性,即是我们刚刚做的第二件与第三件事情,url分发器,第二件事情的作用是把当前view的核心逻辑注册到polls这个app的url分发器上,第三件事情则是将polls这个app的url分发器注册到mysite这个项目的分发器上~是不是有一点点绕呀,我们来看一张图

如图所示,如果我们有polls2 polls3等等等,其他app也可以通过同样的方式把各自的路由分发器注册到mysite上面啦,这样子也就可以简单的就做到请求分发~而且各子app管理自己子app里面的路由关系,也能实现架构上的"低耦合高内聚"~

好~今天就暂时先讲到这里哈,如果还有下期的话~我们再来讲一讲 model层哈 挥挥~

0 人点赞