python-web框架django博客开发

python的web框架django开发个人博客开始。

我选择了用semantic ui做了一个前端页面,毕竟不是搞前端的,这个是仿照部署上线的个人博客做的,只是仿照个样子,乍一看之后还是丑爆了…毕竟前端会就行,模版有时间再找一个好看点的改一点来做就行。

前言

sqlite是自带的一个数据库,非常的轻量级,可以玩一玩。但是对于要存放大量数据,我还是选择比较主流的mysql。

mysql可以在mysql官网下载for windows的。只需要下载server就可以,具体操作结合mysql教程。然后运行services.msc开启mysql的服务即可。

通常我们是结合一个数据库管理工具navicat premium来方便的管理数据库,比如查看表中的数据,管理表等等。这个是需要收费的。破解版可以到网上下载,也可以联系我发给你。

和sqlite不同的是,mysql需要你提前创建一个数据库,然后在settings中配置用户名和密码等等,而sqlite不用,他会自动创建。
使用mysql数据库还需要下载mysql的驱动,这里使用纯python驱动的pymysql,然后在工程项目的init.py中,写入以下两句代码。

1
2
import pymysql
pymysql.install_as_MySQLdb() #必须写入

这个是关于mysql的一点操作。这次我选择的数据库是mongodb,因为前面爬虫爬下来的数据储存在了mongodb,所以就用mongodb来引导出数据到模版中。

小总结

关于django和网页数据的具体对应关系。
当然这是建立在我们配置好的基础上。
我们通过templates和static来做好一个漂亮的模版。
然后在models中写入模版中需要的数据的模型,models是和数据库交互相关的。
在后在Views中写好对应的视图函数,并取出数据库中的数据。当然你得在模版中写好对应的模版语言来做到动态的效果。
然后在urls中定义url地址。
可以在admin中配置一下,使数据可以在后台页面也方便管理。

创建一个简单的博客的逻辑差不多就是这样,当然实际情况并没有说的这么简单,我们需要写入大量的东西才能够达到好多实用的功能。下次再写就是完成这篇博客的时候了。

开始

开始一个项目

django1.8.2 + python2.7
django-admin startproject 项目名称 ————-创建项目
cd 项目名称
python manage.py startapp app名称 —————创建app

打开pycharm,进入项目的settings.py中,将创建好的app名称放入INSTALLED_APPS中。

创建好templates和static文件夹,这两个文件夹要和app文件夹同级。

在settings的TEMPLATES中的DIRS中加上os.path.join(BASE_DIR,’templates’), 这一句是告诉django,templates文件夹的目录在当前工作路径的根目录下,因为如果你不加的话他会在app中找。
app
tem
sta

再在末尾加上,作用也是申明static文件夹的目录路径。

然后再把相应的模版和css还有Js等文件放入相应的位置。改好模版中的名字,这样,最基本的配置就完成了。
这里的模版css和js名字,我个人认为有三种方法。

第一、全局变量的设置
你可以在settings中选择一个容易记的名字,然后经过一点配置,在html文件中的css和js名加上想要的名字—-不推荐
第二、手动
在js和css文件名前边加上static/ —–不推荐
第三、 {% load staticfiles %}
在将前边的配置过后,然后在Html文件中这样写。
te

这样,在runserver后,就可以看到一个漂亮的页面了。

做到与数据库的交互-这里以mongodb为例

需要安装mongoengine—-一个可以实现django model类似的封装。


models中
导入所需要的模块
model
data为数据库名。
下边的两句代码同时也要写在settings中,因为他找的时候会先从settings中找。
定义一个类

1
2
3
4
5
6
class yy(DynamicDocument):   #继承mongoengine的DynamicDocument类
xx = models.xxxxField() #这里的xx必须和数据库中的key值一样

meta = {
'collection':'数据库表名'
}

这样,你可以尝试一下用for循环来利用objects来打印出里边的数据看是否可以打印出来。这样就实现了在Mongodb中取出相应的数据,前提是你要开启mongodb的服务。如何插入数据我在爬取十万数据那一章中已经讲解。


views中

我们使用paginator来达到一个分页器的功能。

1
from django.core.paginator import Paginator
同时也导入在models中的那个类 定义一个视图函数 ![pagin](/images/pagin.png) objects--引入所有数据,后边的分片可以指定取出的数据数量。 传入总数据,并且规定每一页分多少个数据。 第四行代码,是取得url中page的参数值,没有返回1。 定义页码数目 定义一个类,从而从类中方便遍历来取得数据 渲染模版,传入参数。 之后我们就可以在html文件中,利用django的模版字符的for循环来在相应的位置取出数据。 ## url中 > 在url里,我们导入刚才的视图函数
1
from app名称.views import *

然后定义相关的Url,在传入函数,在url中你可以指定一个Url,当然也可以利用regex来写一个url,自由发挥。

admin中

我们可以把相关的数据放在后台页面来进行站点管理。

1
2
from app名称.models import *
admin.site.register(类名)

如果发现后台页面的变量的名字等等之类的问题,可以在原有的类中进行添加,比如增加class Meta,def unicode/str……

后记

这样,作为一个blog的最基本的东西他都有了。
①文件的配置以及模版的定义。
②与数据库的交互,并且通过配置models,views还有模版层以及相关模块,来做到让网页动态显示的功能。
③在admin中写入,方便管理员管理数据。

这些是作为最基本的东西,当然,也是有了作为一个博客他所拥有的最最基本的功能,当然有好多具有强大功能的插件我没有使用,其实django本身也是可以写出来的相比如日志器、评论……

对于我来说,现在的对于每一个方向安排的时间还不怎么够,所以只能有一个最基本的框架,但是深入的话,目前还提不上。
不过,深入,是肯定的,指日可待。

这次发布django只是作为一个关于博客的最基本的框架,下一次再搞django,就是各种功能的提升以及自己的进阶了。