分类目录归档:Django

jquery插件datatables使用

如何把数据库中的数据以表格的形式展示到前端,实现有很多方法,最近用jquery的datatables插件来实现了发现还是比较简单的,今天我们来看一个例子,来说明这个插件的使用,基本原理是view函数从数据库中读出数据,jquery通过ajax获取数据并在前端展示出来,我们先定义一个models.py,如下:

然后定义我们的view函数:

因为datatables接收的是json格式数据,所以从数据库中读出的数据要序列化,就是这句:

json = serializers.serialize(‘json’, boject_list)

添加下url.py:

最后就是模板文件内容了:

其中url指定你的view函数名称,columns指定要显示的列,这样数据就以表格的形式展示出来了,要想美观记得自己要上样式,推荐bootstrap,datatables是一次把数据全部加载到前端来处理,所以如果你加载的条目非常多,就会有停顿感,必须要加上bServierSide参数。

手把手教你用django搭建博客(三)

这是我们《手把手教你用django搭建博客》系类的第三篇,这篇我们接上篇内容,解决如何实现首页文章分页的功能, 要实现分页要用到django的一个插件, 所以要先安装django_pagination,安装方式随意了,pip或者用自己的IDE功能来安装就可以,安装完毕后我们修改下配置文件就可以实现了,说实话,我在没用之前,真没见过实现分页如此简单的,好,废话不多说,我们开始,打开myblog下seettings.py文件,修改INSTALLED_APPS,MIDDLEWARE_CLASSES,TEMPLATE_CONTEXT_PROCESSORS这三段的内容,所以最后你的settings.py文件看起来应该像下面一样(算了,就把我的settings.py全部贴出来了吧):

设置完settings.py文件后,我们需要再修改下我们的模板文件,打开index.html,修改内容如下:

默认的{% paginante %}是在左边,我加入了<span> 标签和行css样式,这样就移到了右边,这样就完成全部的分页功能了,什么??是,你没听错,真的没有了,所以我开篇就说了,用django设置分页如此简单,平生我也是第一次见到,怎么?不信?不信启动项目,访问下:

http://127.0.0.1:8000/blog/  

看看是否已经实现了分页,这时候你看完,心头一乐,发现还TM实现了,转眼间你又心头一愣,哎,不对,这这跟开篇的第一张图不一样呀,我这分页是英文表示的,可你显示的中文:上一页,下一页呀,好吧,兄弟,算你好眼力,我们接下来就看看如何修改下默认的样式,打开pagination.html文件(在C:\Python27\Lib\site-packages\pagination\templates\pagination下),修改后如下:

把对应英文的显示换成中文就可以了,这次是真的完成了。

好吧,到现在你可以去庆祝下你所学的东西了,既然这么高兴,你可以去喝二杯,当然也可以去请找妹子吃个饭,没准还能….你懂的。

 

手把手教你用django搭建博客(二)

接上一篇,上篇我们已经创建了项目和应用,并且可以登录后台,添加文章了,不妨自己先添加几篇文章,待会我们用得到,这篇我们主要讲模板和视图函数的使用,为什么需要模板和视图呢,为方便后续的操作大家理解起来容易些,我现在在这里讲些基本的理论,为我们后续的操作做个铺垫:

在我们的文章在后台添加完毕后,我们要需要在前台页面把它展示出来,这样别人才能看到,所以前台展示的页面我们需要用模板来呈现,那模板的数据从哪里来的,我们猜也应该猜到了,是视图,没错,这部分工作是由视图函数来完成的,最后设置urls就可以访问我们的blog首页了,基本原理就介绍到这里,接下来我们来看看究竟怎么完成一个模板的撰写:

首先在blog目录下建立一个目录templates,在这个文件夹下建立2个html文件,一个叫base.html,一个是index.html,base.html这个网站放置我们页面布局中不变的内容,具体的数据内容放到我们index.html页面中,打开base.html文件,写入如下代码,然后保存:

在这个文件中,为了美观点,我引入了bootstrap的样式,这就是我们base.html文件了,现在打开index.html文件,输入如下内容,然后保存:

这样,我们所有的模板文件就全部完成了,具体的模板语法,我不具体讲解了,请大家自行补脑,我们接下来该编写视图函数了,终于视图该上场了,都快等不及了,打开blog下的 views.py文件,写入:

现在我们完成了所有代码的工作,接下来只要设置好urls就可以访问了,打开myblog下的urls.py,修改如下:

其实就是加了一行而已,因为include了一个文件,所以要便捷blog下的urls文件(如果没有就创建一个),内容如下:

大功告成,进入命令行启动项目:

然后访问:

http://127.0.0.1:8000/blog/ 

如果没什么意外的话,应该你在后台发布的文章都显示出来了,不过还有一个小问题,如果随着时间的推移,你发布了很多文章,首页会变得很长很长,影响访问速度,所以这时候就用到了我们的分页功能了,待我们下篇介绍如何实现分页。

手把手教你用django搭建博客(一)

在没看diango之前,就听说用这个框架来搭建blog是分分钟的事,耳听不如眼见,眼见不如操练,所以今天我们就详细讲解如何完成一个简单的blog搭建,如果有跟着一起练习的兄弟,请在自己电脑准备好环境:

1、提前安装好pyhont2.7

2、安装django1.6(这个很重要,因为django不同版本有些差别,尤其到1.7以上后,为保证做的过程少点艰难,请尽可能版本一致,另外现在很多网上的资料给的答案或解决方案,很多都不注明自己的版本,出问题参考的时候根本用不上,很多还是要自己去琢磨或上官网看资料)

3、找一个自己顺手的IDE开发软件

4、将python添加到系统环境变量(确保在cmd窗口可以直接执行python脚本)。

准备好上面的环境,我们就开始真是进入我们操作环节,不过在为了给小白们足够的信心,我们先看下我们最完后的blog长什么样,看图:

blog解密图

因为是简单的blog程序,所以界面也比较简单,我没用现成的blog模板来做,自己写的一个简单主页面,现在环境准备好了,最终要达成的结果也看到了,我想很多小伙伴们已经受不了,让我们挽起袖子开干吧。

首先创建项目和blog应用:

在cmd命令行下,输入:

然后进入myblog目录,命令行下输入:

这是你的myblog下有两个目录,一个是myblog,目录下有文件:__init__.py,settings.py, urls.py,wsgi.py, 一个是blog,目录下有如下文件:__init__.py,admin.py,models.py,tests.py,views.py,这些都是django自动为我们生成的,后续这些文件我们基本都会用得到,现在我们先不理会这些,用到了我们自然就会知道具体他们什么用途,现在重要的是要告诉django这个应用(app)这是我们项目的一部分,我们编辑settings.py文件,把INSTALLED_APPS里边内容修改成像如下内容一样:

好,经过以上步骤我们就把整个项目搭建起来了,下面我要进入代码部分了,其实也很简单,我们先设计我们的数据模型(Model),因为这是最基础的,发表的文章要存储起来,打开blog目录下的models.py文件,最后保存的内容如下:

这样就完了,我们一共就写了三个字段内容,文章标题,文章内容和发布时间,接下来我们要建立数据库表了,在这里我说下,django默认就支持sqlite3数据,所以,如果你采用的sqlite3数据库,你什么都不用修改,如果你采用的mysql数据库,就要设置settings.py文件里的数据库引擎,数据库名称,主机,用户,密码,这里为了简单,我用默认django的sqlite3数据库,我什么也不用设置。

再说一次,如果你用的 sqlite3数据库,请运行如下命令,建立数据库表(命令行):

运行后你会看到django创建表的输出,运行syncdb这个命令意思是django会查找INSTALLED_APPS里的每个models.py文件,然后为每个model创建一张数据表,到最后你会被问些问题(很抱歉,具体输出信息这段我没能保存下来,只能描述了),不过话说回来,提示的因为也非常简单,所有单词都没超初中英语单词水平:
第一个问题是问是否创建一个超级用户,敲yes
然后输入用户名
然后是邮件
最后是密码
然后就结束了

建立完数据库,我们注册我们的models,打开blog下的admin.py,输入:

最后在访问这前,我们设置访问的url,设置myblog/的urls.py,保存如下:

好了,启动项目,在命令行下输入:

然后可以打开我们页面看看了,在地址栏输入:

进入登录界面,输入刚才的用户和密码,就可以看到界面如下

1

其中blog是我们的应用,点击进去可以添加文章,好了,今天我们就先到这里,总结下我们今天学习了什么:

1、创建django项目和应用

2、创建Model,建立数据库表

3、设置settings文件,包含blog

4、设置urls文件,确定访问网站的url

5、注册我们的app,集成django-admin

6、访问我们的后台,添加文章

以上希望大家多练习,下一篇我们将讲解模板,视图以及分页实现。

Django模型1对多和多对多关系

django数据模型用python类的属性和方法方式对数据库表进行了映射,在操作数据库过程中,我们是对每个模型对象进行操作,而不是采用底层sql的方式,当然可能有的人喜欢用sql的方式直接操作数据库,我之前也是写sql对数据进行操作,但话说回来,既然我们选择用了用django框架开发,那我们就应该充分利用框架给我们提供好的方式去进行,这样既符合django的设计哲学,当然也给我们开发带来很多便利,那今天我们就从基本的说起,因为既然谈数据库,就不得不说实体,而实体之间就存在的各种关系,所以今天我们就说下django模型的1对多和多对多关系。

在开始我们django模型关系时,为方便我们更好的理解django模型,我们先从我们熟悉的基本关表讲起,我们先得了解一个基本问题,什么是1对多、多对多,为什么存在,我们该如何用关系型数据库表去描述,如何你对以上问题摸不着头脑,那么莫着急,我们一一说来,简单说我们刚才说的都是关系型数据库中数据描述实体之间的关系,什么是实体,书中讲的都很抽象,我们举几个例子很容易说明:比如一个学生就是一个实体,一个老师也是一个实体,一个球员也是一个实体,球队等这些都是所说的实体,每个实体都有自己的属性,比如学生就有姓名,性别,球员有编号,姓名,球队有队名等,通过这些实体的属性描述,在我们现实世界中会很容易发现他们其实是有关系的,比如球员和球队的关系,我们如何来分辨是到底是哪种关系呢?其实有一个很简单的办法(在这里我要感谢我大学老师,哈),找个纸,把多个实体画出来(比如用方框表示),然后用笔在其中一个实体上写上1,然后开始读1个xx对应xx实体,写完后然后反过来再来,表另一个实体写上1,再翻过来读一次,如何其中有发现某个实体是多的就写上m,如果两边读完都是多对多的就写上n:m,利用该方法,很容易实体出实体之前的关系,示意图如下:

111

 

上面两个图分别表示了多对1和多对多关系,其实多对1也是反过来的1对多,没什么区别,那我们需要了解,在没有models模型前,我们是数据表中如何处理呢,比如我们就拿上面实体来举例说明:

学生(姓名,班号)和班级(班号),因为1个班级可以有多个学生,而一个学生只能属于1个班级,所以他们是1对多关系,用关系数据库描述需要在多的一方(学生)增加班号外键关联到班级中的班号,这样就可以查每个学生属于哪个班号了。

然后我们看多对多关系,学生(学号,姓名)和课程(课程号),因为一个学生可以选择多门课程,1门课程可以被多个学生选择,所以他们是多对多的关系,我们该如何建立他们之间关系呢,如何找出某个学生学习的课程呢,用我们上面的方法是不行了,因为这两个实体都是多的一方,所以呢,要建立他们之间的关系,我们需要多建立一个关系表,这个关系表中存储学号和课程号,并设置外键分别关联到学生和课程表中,这样就变成了两个1对多,1个学生可以选择多门课程,1门课程可以被多名学生选择,这样就可以根据他们的关系查找每个学生所学的课程了,基本的理论我们就说到这,我们接下来讲django模型。

我们之所以上面讲那么多,主要是为我们理解django模型做铺垫,因为理解了上面,再理解我们的模型就比较容易了,再加上django框架有一部分都帮我们做了,我们只管使用就好了,也很方便,但原理我们还是要懂一些的,避免出现问题,开始抓瞎呀,我们建立模型:

以上就是基本的模型,为方便说明,我只列了需要的字段,实际工作中会比这个复杂些,但万变不离其宗,理解了这个简单的,看其它的也会容易,需要说明的用django模型,不要特别指定id,因为djang在建立数据表的时候会默认建立一个自增长的id, 对于多对多方面,你也不需要建立多余模型,django会自动为你建立一个关系表来描述两个实体的关系,所以这就是用框架的好处,可以让你少些很多代码,而且从另一方面讲,你的代码野会变得比较强壮,今天我们就讲到这里了,下一篇我们讲如何通过数据模型对数据库表进行操作。