Django用法
2017-06-19
基础用法
首先是下载
建立工程文件,用过scarpy框架的对这个应该不会很陌生
1 | django-admin.py startproject my_blog |
为了方便查看我们用Django框架建立的my_blog文件,查看它的结构,所有用到tree来查看
1 | brew install tree |
效果如图:
然后创建一个app,这里的app是指的一个功能模块,比如这里建立的app名称为article,负责的功能就是文章。可以有很多功能模块。
创建一个模块的命令是:
1 | python manage.py startapp article |
注意是在我们已经创建的my_blog目录下进行创建,需要先切换进目录。新建了还不行,还要通知给主文件my_blog,告诉它“我在这呢!”,所有需要在my_blog/my_blog/setting.py下添加新建app,在INSTALLED_APPS中声明。
Django中默认用的数据库是sqlite,这里sqlite数据库里的需要同步一下,每次新添加app,需要同步数据库。命令是:
1 | python manage.py migrate |
然后就可以成功启动了。启动的命令为:
1 | python manage.py runserver localhost:9000 |
可以打开浏览器查看
接下来就是创建Models的了,Models在我的项目是干什么的,Models在我的项目里是用来决定我的项目中有什么的。Models在article目录下,决定的是这个article中的内容。
在article/models.py编写程序
可以看到代码里有title,有category,有date_time和content等,这些有什么用,我们先看下博客的成品。
这里的article就是title,time就是date_time,models中定义的content,点击文章就会进入详情页,里面就会有文章内容。面所有创建models中的内容的时候,就是创建这些页面中有什么的过程。
从成品来看,文章不止有一篇,而我们models如其名字,定义的是一个模板,但是文章有好几篇,这就有些类似淘宝了,文章就像是每个商品,需要商家来进行上架,我们的上架需要一个后台来进行上架操作,这就是一个后台管理界面,这个后台管理界面在Django中非常方便添加,我们创建项目时已经是默认有了,不信的话,可以去setting中的INSTALLED_APPS查看:
我们可以在浏览器中进入localhost:9000/admin,呈现的是一个登陆页面,账号哪里来呢?
需要我们自己创建:
1 | python manage.py createsuperuser |
输入邮箱和密码,不要以为是test项目就以为可以随便,密码设置这里也是有严格的要求的。
用账号密码登录,这时候进入后,是这样的管理界面
而我想要的是
我需要把我创建的Article这个app引入进来。如何引入?进入article/admin.py这个文件进行修改,其实从这个文件的名称来看,admin不就是我们管理的主页面的名称,这里的admin不是随便起的名字,每个app的admin文件都和主文件的admin有联系。
第一行与链接数据库有关;第二行和在article中导入models有关;第三行用于在主admin中注册Article。
接下来就是很重点的,处理客户端的访问了,访问某个页面,然后我们返回什么数据。也就是函数定义页面。函数处理的文件为article/views.py,这这里编写逻辑。
如喜闻乐见的Hello World
但是有一点需要说明的是,我们访问localhost:9000,得到的结果是
但是如果访问localhost:9000/ahdifj就会找不到页面,说明有一个地方是负责分配流量的,也就是指定页面的,不同的页面有不同的view文件来定义相应的页面。
这个分流的地方就是my_blog/urls.py
这里用正则表达式进行了匹配,来进行过滤,访问的是/的指定到views去,如果是/admin的就指定到admin的页面。
入门的先写到这,总结一下今天遇到的坑:
不要在一个terminal中进行所有操作,关闭Django,然后在重启,这样容易发生端口已经被占用,我们不用关闭,另外打开一个页面进行vim编辑就好了,编辑完了用:w保存一下,然后会自动进行编译。
查看端口占用情况的命令:lsof -i:端口号
killall+进程名
在admin登录报错的话,可能是没有同步数据库.
之前在article中添加的文章,下面这一步相当于查询sqlite数据库的操作。
不要忘记这里和datetime的import。
利用Django简易的实现一个操作数据库后台
Django为各种数据库提供了非常好的支持,这里拿sqlite作为例子。
1.在项目中新建app
1 | django-admin.py startapp cis |
2.在项目的settings文件中的INSTALLED_APPS中添加新建的app名称。
3.在settings文件中添加databases配置。
1 | DATABASES = { |
4.在models.py文件中建立数据库的表和字段
1 | import uuid |
这里面可以学习的一点就是CommonBase,和AppProfile的继承的用法。
5.数据库初始化和创建管理员
目前使用默认Sqlite作为数据库,使用Django命令工具初始化:
1 | python manage.py makemigrations && python manage.py migrate |
创建超级管理员:
1 | python manage.py createsuperuser |
本地debug模式启动Silvanus:
1 | python manage.py runserver <port> |
6.启动Django进行查看。
其中的Appprofiles就是我们上面代码生成的表。
查看它的添加数据库条目的页面
7.命令行查看sqlite数据。
启动sqlite数据库
1 | sqlite3 /Users/mac/Desktop/Soga/db.sqlite3 |
启动django的python命令行环境
1 | python manage.py shell |
调试使用sqlite中的数据