首先是下载
建立工程文件,用过scarpy框架的对这个应该不会很陌生
django-admin.py startproject my_blog
为了方便查看我们用Django框架建立的my_blog文件,查看它的结构,所有用到tree来查看
brew install tree
tree my_blog
效果如图:
然后创建一个app,这里的app是指的一个功能模块,比如这里建立的app名称为article,负责的功能就是文章。可以有很多功能模块。
创建一个模块的命令是:
python manage.py startapp article
注意是在我们已经创建的my_blog目录下进行创建,需要先切换进目录。新建了还不行,还要通知给主文件my_blog,告诉它“我在这呢!”,所有需要在my_blog/my_blog/setting.py下添加新建app,在INSTALLED_APPS中声明。
Django中默认用的数据库是sqlite,这里sqlite数据库里的需要同步一下,每次新添加app,需要同步数据库。命令是:
python manage.py migrate
然后就可以成功启动了。启动的命令为:
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,呈现的是一个登陆页面,账号哪里来呢?
需要我们自己创建:
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。
然后是
点击read more
网友评论