onekey powered by django

Posted by Borg on October 15, 2016

Borg的第一个django网站

最近在 Github 失踪了挺久,去学 Django 框架去了,还实践写了个小网站。大体的思路是一个密码管理网站,通过加密每个记录的信息生成密码。本来是想着服务器端存一部分信息,用户记住一个通用的密钥,每次获取密码的时候都需要输入一遍密钥。这样就算数据库所有的信息被窃取也没法得到全部的信息,因此还是安全的。不过这样子也就没办法验证用户输入的密钥是否每次都一致,也就无法验证最后得到的密码是否正确,而且网站本身登录需要一个密码,统一密钥又是一个搞得复杂了,所以暂时就没有采用这种做法。最后是通过加密各种相关信息(具体就不说是什么了)得到密码。最大的好处在于可以为每个网站的不同账号都设置一个不同的密码,再也不用绞尽脑汁编密码了。缺点就是用的时候需要每次打开网页登陆才能得到密码,估计用户也记不住加密后毫无规律的密码。如果能做成移动端的应用相信就会有人用,但我不会啊…总之网站还各种不完善,只是个雏形,没有人合作也懒得升级维护,不建议现在使用,等出正式长期维护的版本再说,不过要是有人敢用我就敢续费服务器,毕竟也是自己辛辛苦苦写的配置的。暂时还不支持中文,主页也没有上各种介绍的信息,about页面也还没写,最重要的是测试代码也还没写…可能没事写写测试代码,但短期不会有重大升级。

成果

首页

这是首页,提供了个测试帐号。导航栏右上角的图标登录后会变成用户名和登出,Django 的模板使得这点实现变得简单多了。。。 首页

注册

注册时候是需要验证邮箱的!!!会收到来自网站的验证邮箱哦,是不是很帅,哈哈。还得感谢开源项目 django-users 实现了这点。不过该开源项目注册时只能用email,也只能用email登录,而且默认的界面真的很丑很丑很丑,要拿来用还得各种改源码。不过确实很好用的。

密码列表

登录后会跳转到密码列表。 列表

加密

点击每条记录都会跳转到加密页面,为了方便加上了个按钮,点击按钮可以隐藏或者显示密码。 加密

更改密码 Update

还在为取密码发愁?通过更新 timestamp 可以自动更改密码,再也不用绞尽脑汁取密码了。为了避免意外,还特地放上了旧的密码和新的密码,方便修改密码的时候用,不过退出该界面后旧密码就无法得到了哦。 更新密码

更改备注信息 Modify

Modify 与 Update 的区别在于 Modify 修改的信息只是便于用户标识密码,并不会影响最后加密后的密码。 Modify

删除 Delete

删除,不用解释了把。 Delete


以下就总结下接触到的技术和问题吧:

Git

不管什么项目都离不开版本控制器,所以 Git 是第一个要考虑的。由于 Web 不适合开源,而 Github 私有的代码仓库又是付费的,学生党自然是另寻其它的代码托管。CSDN CODE 的代码托管是按容量算的,每个帐号有2G的免费容量可以使用。相比与 Github 界面丑了点,没有那么多的数据统计,也没看到生成证书。还有不能在网页上直接在云端创建新的分支,与 Github 不同,必须通过本地推送到远端的分支创建。

git push origin local:new

这样就是把本地的 local 推送到远端的 new 分支,如果没有就会创建。而删除远端分支则是推送一个空分支。

git push origin :new

SSH

SSH配置公钥常用的linux命令:

ssh-keygen -t rsa
ssh-copy-id name@host

前一个用于生成公钥,然后复制到服务器上,可以实现免密码登录服务器。发现后面那条命令可以省去手动复制,方便很多。

Django

Django 框架的学习是看着文档学的,实在不推荐这样的学习方式,还是买本书看上手比较快也比较有趣,文档太多了,而且很多是记不住的还是得再回来查。Django 框架的 ORM、模板、通用视图、表单、管理系统、认证系统都是非常强大的,使得开发变得简单多了。注意的是安装时要注意给定版本,不然装的会是1.1的老版本,然后就会发现 manage.py 有些命令不支持,配置服务器的时候碰到的坑。

pip install django==1.7

如果要用虚拟环境记得先激活虚拟环境。

Bootstrap

没错,我不是前端,但我知道有这么一个东西,我也知道它的网格系统,还有一些基本的css类,都是之前公开课了解到的。不过毕竟不是前端,是参照着一个类似于文档的 Bootstrap 英用写的,不过最后还是有点丑的感觉。

Virtualenv

python 虚拟环境,可以为每个项目创建一个虚拟的环境,避免一个 python 环境中安装太多包。其实本地电脑上装的 anaconda,之前公开课装的,比较适合科学计算,不过还不是很懂用,没怎么用。

Gunicorn

最后部署网站选择的 gunicorn 和 nginx 的组合,gunicorn 还算简单,安装运行下就行。

pip install gunicorn

gunicorn project.wsgi:application --bind=127.0.0.1:8000 --daemon

注意如果使用虚拟环境 gunicorn 安装时还是要激活虚拟环境。还可以配置下让 gunicorn 开机自启。

nginx

nginx 完全不熟悉,第一次接触,碰到了个坑搞了一整天 — —!网上的教程基本是让把配置文件从 /etc/nginx/sites-available 软链接到 /etc/nginx/sites-enabled ,但在我的服务器上却不行,还以为是配置问题搞了好久。最后直接复制过去就可以了,耗了一天,还在 stack overflow 上提了问题。据说这是运维做的事。。。


最后

最后的最后,我要去学习python进阶和可视化了。没事不要入python的坑,很强大,开发周期短,但是还不够火,校招几乎没看到单独招python的,都快失业了(T▽T)。不过热爱学习的孩子最后运气一定不会太差对么,一定会找到工作的。I need a job!

对了,谁想一起搞这网站的可以联系我哦~