您的位置:首页 > 编程语言 > Python开发

一个菜鸟从0学python+django开发的碎碎念记录篇(二--关于django的项目目录管理)

2020-02-02 20:09 337 查看

上一篇啰嗦的说了新建项目,点击传送门
这篇先不着急说做网站的事情,正好看到一篇文章说关于项目目录管理的,点击传送门 ,如果无法访问了的话,看我下面的碎碎念也是一样的。

========================
以下2019.8.20更新补充
唉,原谅我,罗里吧嗦了一整篇,后来在百度上 发现了一句神器:
pip freeze > requirements.txt
只要这么写,就能自动生成requirements.txt 文件了
好吧,我把原来的文件删了,生成以后我目前的版本是:
Django2.2.4
pytz2019.2
sqlparse==0.3.0

这里有个坑,告诉大家一下
提交pip freeze > requirements.txt 的时候,提示我pip版本太低,然后就用了升级语句:
pip install --upgrade pip
结果升级成功,但是使用pip -V 显示还是10.0版本
最终解决方案是:
1、删除新下载的Lib/site-packages下的 pip-18.0.dist-info 文件 我的目录如下: C:\Users\Administrator\python\venv\model\Lib\site-packages

2、pip uninstall pip 使用命令卸载pip并重新安装

3、重新安装:easy_install pip

然后pip版本就是最新的19.*了。然后再运行
pip freeze > requirements.txt
就能成功生成了。

========================

上一篇我们最后的目录是这样的:

因为网站后期能开发成什么样谁也不知道,也许需要迁移,也许你要增加人手,也许你新来了个程序员,也许…但是从一开始养成好习惯还是必要的,我摘抄了一部分上述传送门中我觉得新手应该值得参考的部分,油腻大叔们可以直接瞅瞅:

管理项目需求说明:
首先我们在项目中新建一个文件:requirements.txt。每个Django项目都应该有一个顶级的requirements.txt文件来列出项目中所有使用到的python包。

requirement.txt中类似如下内容:
Django1.6
psycopy22.4.5
South0.7.3
gunicorn0.14.1
nrerelic1.2.0.246
django-cerlery2.4.2

创建requirements文件是为了让其他开发者拷贝你的项目代码后可以快速地根据此文件中内容安装好必须的python依赖包。这样他们可以方便地运行你的代码,而不必煞费苦心地猜测项目依赖包的版本。

现在你知道为什么我们需要这么做了,照做吧!

看吧,像我这样连我的django版本是啥都搞不清楚的菜鸟,万一请了大神来,人家问我啥版本,我说不知道,大神会不会KO了我?最重要的是:你有了这个文件,以后你请大神来复制了你的代码,大神可以根据你的这个文件里的要求,一键直接安装所需要的【Python包】到大神电脑上,而不是一个个的安装,一个个的猜!相当神奇!强烈推荐!

所以虽然还是不知道diango版本(或者谁知道怎么看版本,留言给我,我一定知错就改),但是还是建个这样的文件requirement.txt:
新建方法:在csdn顶级目录上点右键:

然后出来:

OK之后,看到了吧,新的txt文件就弄好了

这个txt文件里,应该写入目前你所用到的python依赖包以及版本号,就是你本机所用的所有版本,就大概是这个意思:

请忽略我不知道版本号这个事情。

OK,到这里一般来说你们公司新来的程序员就知道要依赖那些包了,(请记得每次更新了之后要更新这里的版本号哦)那么有个新的问题来了,一般来说,我们的开发环境、测试环境、部署环境都不会100%一模一样,那又该怎么区分各个环境下的依赖包和版本号呢?很简单,建个目录,然后把所有设计到的不同场景下的配置统统写一遍!
(卧槽好麻烦,不写不行吗?我只想编程,写这个玩意干啥)
相信我,我也是个菜鸟,不会带你做无用功,你给老子写上去,一会有你爽的时候!

好,还是右键点击根目录后新建一个requirements目录:

点击OK以后,目录在这里:

好,继续,照葫芦画瓢,在这个目录下新建4个文档:
注意!新建的时候要去requirements目录上右键新建new-file,你跑去根目录右键我救不了你!
弄完之后目录是这样的:

建了这么多文档,具体有啥用?
第一个common.txt,里面一般放的是通用包,也就是必须用的包,比如django之类的,其他的txt里面你可以根据生产环境啊,测试环境啊之类的放除了common.txt里已经写过的包放进去。这样你的各个环境就不会乱。当然,文件名字可以不用起的这么装逼,你叫shengchanhuanjing.txt也是可以的,我不拦着你。

(我就不能统统安装一遍?)

当然可以!没人可以阻止你这种偷懒且傻*的做法。假如明明2个包就解决了测试环境,你为啥非的安装几十个包?显着你有钱还是咋?听话的孩子有饭吃,乖。

好了,现在我们假设一个情况,你请了个大神来,大神说你把我的笔记本上给我装好环境,我抽根烟就回来。这时候你可以这样干:

首先假如你的dev.txt文件里是已经写好了依赖包的:
-r common.txt
django-debug-toolbar==0.9.4
这个-r的意思就是,除了下面的django-debug-toolbar这个包以外,你把另外一个文件common.txt里的包也一并给我引用过来!爽不爽!

这个时候,你看着窗外的大神,潇洒的在命令行界面里写下:
pip intal -r requirements/dev.txt

回车!然后静等一会,你的所有包和环境就安装好了。是的。这就是魅力,就这么神奇,在隔壁桌小胖还在一个个满头冒汗的安装包的时候,你已经完成了环境的所有预备工作。

原文中有几个区分不同环境的情景,我直接粘贴过来:

当我需要在本地开发环境下运行我的代码,我就安装requirements/dev.txt中的依赖包
当我在生产环境下运行我的代码,就安装requirements/prod.txt中的依赖包
当我要针对我的代码做一些测试的时候,我就安装requirements/test.txt中的依赖包

道理都是一样的,明白了不?仗剑天涯,从建立requirements目录和文件开始!
(其实这名字太装逼了,我宁可叫req.txt)
嗯,说过了,不管你。

啰嗦一句区别:requirements.txt是为了方便查阅你目前开发时所用的各种依赖包,而requirements目录下的几个文件是为了区分不同的情景下所依赖的依赖包。不要纠结,对你有好处。

OK,现在环境问题搞清楚了,下面我带你瞅瞅怎么管理app

app是啥?手机应用?NONONO!这个叫app的玩意和手机应用没有半毛钱的关系,在django里面,这个app意思指的是你网站里各种各样不同的功能,比如登录、注册、发布信息、查阅信息、删除信息、增加管理员等等等等。目前我的水平只知道,你应该把这些不同的功能放到不同的app里面去,方便使用。

那么你网站里如果有上百个功能,怎么办?是的,你一定和我一样认为我的网站做的比微信还牛逼,好吧,那么你就更应该考虑这个问题:
开发人员能否很容易地找到你的django应用?
开发人员能否很容易的找到你的django库文件?

所以,不要在你目录下包含大量的自定义应用,不要让你的目录结果混乱,而很难找到你想要的东西!

怎么办?
哈哈,再建个文件夹,把他们统统扔进去!
稍等!刚才手快那个哥们,你听我说完!

我们现在是在说新建功能(app),不是新建txt,所以,你要注意,新建目录的方法一样,一般来说我们都取名叫apps,类似这样:

建根目录需要去csdn上面点右键!以后不提醒了昂!

好,现在要去apps这个目录下,新建一个__init__.py文件,记得为啥不?废话,你这个目录下面放的全都是功能,你没有二哥坐镇,一会大哥来了要用你功能小弟,发现二哥不在,所有功能你用不了,你想si?
现在是这样的:

好,OK,现在我们去新建一个功能(app),建个啥呢,建个新闻功能吧,就叫news好了。
去你的pycharm里面最下面找到这个:

输入: cd djangolicious/apps 意思就是进入到apps这个我们建立好的文件夹里
再输入:django-admin.py startapp news 意思就是建立一个叫news的功能(app)
如果有错误,看下你是不是在apps这个目录下。

好如果没问题,现在目录是这个样子的:

有没有惊喜的发现,news目录下有好多django给我们创建好的文件?老规矩,别手贱乱删,留着有用,这里就是给你教一下怎么新建功能,了解就好,爽了就好。

原文中还说到了修改setting文件的建议,思路和方法都是一样的,有空的年轻人可以多尝试一下,这篇就到这了,下一篇聊聊我对django开发的流程理解。

  • 点赞
  • 收藏
  • 分享
  • 文章举报
别记昵称我总换 发布了4 篇原创文章 · 获赞 0 · 访问量 346 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐