django框架和环境搭建有什么联系


关于Python的安装,请参考站点中Python教程的相关部分,这里不再赘述。

建议安装最新版本的Python!

Django各版本对Python版本的依赖关系如下表所示:

Django本身的版本规划时间图如下所示:

从上表中可以看出Django的版本更新迭代非常快,大版本号几乎两年加一。实际上,对于非重度用户,Django的版本差别并没有你想象中那么大,完全不必为版本的问题头疼。

如果你是通过升级的方式安装Django,那么你需要先卸载旧的版本。

Django提供3种发行版本,推荐使用官方的稳定版本:

  • 你的操作系统提供的发行版本(Linux)

Django本质上是Python语言的一个类库,因此可以通过pip工具安装。这也是最简便、最好的安装方式。不建议通过下载安装包或者编译源码进行安装的方法,除非你的环境无法连接外部网络。

以windows系统中使用pip命令安装为例:

在Linux操作系统中,也是一样,使用pip工具包安装Django。

进入Python交互式环境(注意一定要进入刚才安装了Django的Python解释器),按下面所示查看安装版本:

或者使用pip list命令,查看是否存在Django模块。

成功安装Django后,以windows为例,在Python解释器目录下的Scripts文件夹中可找到一个django-admin.exe文件,这是Django的核心管理程序,最好将它加入操作系统的环境变量中,这样在以后的调用会比较方便。

如何进入环境变量设置界面,请参考Python教程中的相关部分。如下图所示,在Path变量中添加Scripts目录。

回到cmd界面,直接运行django-admin help,如果能看到下面的内容表示环境变量设置成功。

实际上,对Windows操作系统环境变量path的编辑,只是为了在命令行下可以无需带路径,直接执行一些程序,而不会出现程序文件无法找到的错误。

这样就会在当前目录下创建一个叫做mysite的Django项目。

可以看到Django自动帮我们创建了一个mysite文件夹,这是项目的根目录。在mysite根目录中,又有一个mysite目录,这是整个项目的配置文件目录(一定不要和同名的根目录混淆),还有一个manage.py文件,它是整个项目的管理脚本。

打开你的浏览器,在地址栏输入127.0.0.1:8000,如果看到如下的界面,说明Django一切正常,你可以开始Django之旅了!


事实上,我们一般不使用命令行,而是直接在Pycharm中创建Django项目。

Pycharm是进行Django开发的最佳IDE,请大家自行安装,建议使用最新专业版本。(非专业版的Pycharm不提供Django开发模块,非最新版的Pycharm可能对最新的Python或者Django支持不好。比如Pycharm2018对Python3.8的支持就不好,并且这些坑不好填。)

2018以后的Pycharm版本都支持同时创建虚拟环境和Django项目。

下面以Pycharm 2020.1专业版为例。(可以安装中文插件)

  • 使用此项目新建环境处选择Virtualenv(这可能需要你提前使用pip install virtualenv命令安装虚拟工具virtualenv)。通常情况下,虚拟环境会以venv的名字,自动在工程目录下生成。
  • 在基本解释器处,选择你要使用的Python解释器
  • 两个单选框,根据需要自行选择
  • 如果想使用现成的解释器或者虚拟环境,请选择现有解释器
  • 模板语言: 选择使用的模板语言,默认Django就行。
  • 模板文件夹:这是Pycharm安利给我们的功能,用于额外创建一个工程级别的模板文件的保存目录,可以不设置,让它空着。template是目录的名字,可换成任何你喜欢的名字。这里我们不选择,因为可能出现os模块缺少的bug。
  • 应用程序名称: 自动帮你创建一个app,可选的功能
  • 开启管理站点: 用于开启后台管理admin功能,一般勾上。

没什么问题了,就点击Create吧。

下面就是一段时间的等待,Pycharm会帮助我们自动创建虚拟环境,以及安装最新版本的Django。

创建完成之后,进入Pycharm的解释器设置菜单,可以看到当前Django版本是3.1版本。如果你要指定过去的版本,比如2.2、1.11等,那就不能这么操作了,需要在命令行下自己创建虚拟环境并安装django。或者在这里先删除Django,再安装你想要的指定版本。

看下我们当前的状态,注意venv虚拟环境目录。

但是在Pycharm的早期版本中(包括教程中使用的2020.1版本),依然使用的是os.path,如果你在创建项目的时候同时指定了template目录,那么可能在运行服务器的时候出现缺少os模块的错误。此时,只需要在settings.py文件顶部添加import os即可。

点击绿色的三角,启动默认的开发服务器,如果看到欢迎界面,说明一切OK!

注意:第一次启动服务器后,Django会默认创建一个db.sqlite3文件,这是SQLite3数据库。

如果没有特别说明,教程将在Pycharm中开发Django项目。





笔者在上篇文章Django框架的初使用已对Django框架的前世今生、基本逻辑以及使用的基本框架搭建( 搭建虚拟环境/创建Django项目/创建Django项目下的应用/运行服务器)进行了阐述,本文将从M模版、V视图、T模版依次论述,进一步梳理Django框架使用操作的逻辑流程,期望可以在加深本人理...

笔者在上篇文章已对Django框架的前世今生、基本逻辑以及使用的基本框架搭建( 搭建虚拟环境/创建Django项目/创建Django项目下的应用/运行服务器)进行了阐述,本文将从M模版、V视图、T模版依次论述,进一步梳理Django框架使用操作的逻辑流程,期望可以在加深本人理解的同时给他人带来一点帮助。

  • M全拼为Model:负责和数据库交互,进行数据处理。
  • V全拼为View:接收请求,进行业务处理,返回应答。
  • T全拼为Template:负责封装构造要返回的html。

下面依次对模型M、视图V以及模版T进行逻辑梳理:

我们之前操作数据库是通过写sql语句,那么在使用Django能不能不写sql语句就可以操作数据库呢?

可以,就是通过接下来要给大家讲的ORM框架


即通过类和对象操作对应的数据表,就不需要再编辑sql语句

  • O是object,也就类对象的意思;R是relation,翻译成中文是关系,也就是关系数据库中数据表的意思;M是mapping,是映射的意思。
  • 在ORM框架中,它帮我们把类和数据表进行了一个映射,可以让我们通过类和类对象就能操作它所对应的表格中的数据
  • ORM框架还有一个功能,它可以根据我们设计的类自动帮我们生成数据库中的表格,省去了我们自己建表的过程。

django中内嵌了ORM框架,不需要直接面向数据库编程,而是定义模型类,通过模型类和对象完成数据表的增删改查操作。

使用django进行数据库开发的步骤如下:

  • 通过类和对象完成数据增删改查操作

下面我们以实际案例为例来给大家介绍Django中进行数据库开发的整个流程。

在应用下的models.py进行模型类的定义,本实际案例将定义两个类分别是:

  • TestProject类:测试项目类,用于记录相关测试的项目;
  • TestPeople类:测试人员类,用于记录相关测试人员的信息;

    注意:在这里测试项目类假定是一类,测试人员类是多类,即测试项目-测试人员关系为一对多。

测试项目名称:Tname 测试项目发布日期:Tdate

根据设计,在models.py中定义测试项目模型类如下:


2019 年 4 月 23 日,我来更新一下回答吧。

请允许我慢慢道来。目录如下

Flask 怎么定位自己的?

将自己定位为微框架。啥叫微框架,就是毛坯房的意思。给你个毛胚房,你自己装修去。

Django 怎么定位标榜自己的?

定位不同,就会导致设计上和功能上的倾向性。

假如你和我一样是先用 Django 这种给你准备了大量方便工具的框架。当你切换到 Flask 的时候,明显会感觉到的问题是:

不但失去了铠甲,还多了很多根软肋。

Flask 只是一个微框架。要做你自己组装去。

  1. 登陆认证鉴权怎么搞定? 自己写 User 模块。
  2. 缓存怎么做? 自己手动封装一下 RedisPy

当然,我并不是在否定 Flask, 功能少某种程度上不是框架的缺点,而是使用者的缺点。笑....

  • 如果你说 Flask 是轻量级的,是方便扩展的,那是你是对的。

如果你是进阶的玩家,你可能更喜欢 DIY 一些

路由设计上,从使用者的角度来说,更喜欢 Flask 一些,因为可以随用随定义。

代码组织的好的话,两者差距不是很大。

假设我设计一个应用叫做 shamate, 这个应用可能要对接多方面接口:

使用 flask 的时候,一个这样的应用,文件结构应该是这样的。

嗯,被老大 Flask 大牛带了一段时间之后,切分 django 是这么切分的

需要注意的是,Django 的在 Models 里面设置的时候务必显式写上 table 名

Django 模块如果涉及到业务的 Model, 一般很难通用,但如果要写通用的 Tag 系统 Attachment 系统,则,一般性能可能不太跟得上。如果不在意性能的话,建议 Folk 一份开源库,方便后期修改。

参考上面的结构,你应该能看出来,配置其实相差不是很大。主要区分

Django 是看了文档就能撸一个不错的项目出来。在不断学习的过程中,参考社区最佳实践。慢慢的撸一套自己的标准。

Flask 则是...... 需要更多的参考社区最佳实践。

扩展都挺多的。但建议涉及到业务逻辑的扩展,直接 cv 到项目中。这样方便后期定制。

Django 社区里面东西满多的, 举个例子, 我的文章里介绍过

这个工具用起来有多舒服呢?

这方面的话, 推荐两本书, 他们推荐的第三方库都是不错的.

  • 《Django 企业开发》这本书是国人写的, 特别推荐一下

至于 Flask 则推荐官方的链接

包含了社区质量相对高的包.

实际上不然,我接触的 Flask 项目都写成了自己的一套标准。

  1. 表单怎么解决?自己搞一套 Form 标准
  2. 登陆认证鉴权怎么搞定? 自己写 User 模块。
  3. 缓存怎么做? 自己手动封装

最后你发现你学的东西一点都没比 Django 少到哪里去。

  • 对的,代码少自然优雅.....
  1. 你说,admin 模块很难用,但讲真的,admin 模块适合人手不足的情况下快速怼界面,快
    速验证自己的设计思路。国人出的 xadmin 也是不错的。
  2. Django 不 Scale, 缓存做好了么?查询优化了么?分库分表了么?MQ 做了么?如果这还不够的话,确实应该开开心心的招人换语言和框架了。
  3. Django 很重.... 然而,你学完一套 Flask 的整个体系之后,发现一点都没比 Django 少学什么。但一定会发现你在找文档上面确实花费了不少的时间。

理由是,通过 Django 可以以最小成本的了解 Web 开发的点点滴滴,然后看工作项目是啥就认真研究啥。

之前觉得Django写起来很快的, 但被TL带了一段时间之后, 发现TL也能把flask app写的很快, 这还是取决于使用者的.

当然,如果有兴趣的话,可以通过我在专栏写的 Django 的文章来做个实战项目了解 Django 开发的点点滴滴

我要回帖

更多关于 python框架django入门 的文章

 

随机推荐