django
geerniya
这个作者很懒,什么都没留下…
展开
-
django数据模型中关于on_delete的使用
一、外键的删除 关于on_delete的总结1、常见的使用方式(设置为null)class BookModel(models.Model): """ 书籍表 """ book_name = models.CharField(max_length=100, verbose_name='书名'...转载 2018-04-06 09:00:33 · 2623 阅读 · 0 评论 -
django学习——xadmin中集成富文本编辑器ueditor
xadmin为django后台管理系统admin的升级版,点击进入github在对后台进行编辑时,采用百度开源的富文本编辑器ueditor,本文采用djangoueditor,源程序点此进入。由于作者不再对其进行维护,这个版本不再适用于Python3版本,Python3的版本安装 点此进入。对于以上xadmin和djangoueditor 的安装,本人建议直接集成在pycharm中,而不是装在虚拟环原创 2018-01-20 15:44:56 · 5837 阅读 · 1 评论 -
Django开发个人博客网站——19、通过Django Haystack实现搜索功能(上)
该博客最开始采用的模板是并不包括搜索功能的,在主页只有主页、归档和分类三个部分。最后博主自己添加了搜索框,不过其实不太想让大家使用这个功能,因此将搜索框隐藏了,只有再点击搜索时,才会显现出来。但是这个添加匹配的不太好,导致手机端会有对不齐的现象,以后前端学好了再来修复这个bug。博客的搜索功能简单来实现的话,通过查询功能查找到符合关键字的对象。但是,对于一个搜索引擎来说,至少应该能够根据用户的...原创 2018-02-04 20:59:08 · 3089 阅读 · 5 评论 -
Django开发个人博客网站——18、实现博客的分类
我们在设计博客的数据库时,分别定义了博客的分类和标签,规定博客与博客的分类为一对多关系,也就是一个博客只能有一个分类,而博客的标签则为多对多的关系,一个博客可以有多个标签。按照功能来划分的话,也就是博客的标签是对博客分类的一个补充。考虑到我们已经为博客网站设计了标签云,如果再设计一个分类云的话,就显得重复了,为此,我们不再单独创建分类页面,而直接在博客详情页面中添加博客分类的入口,这样既能查询...原创 2018-02-04 17:25:19 · 2035 阅读 · 0 评论 -
Django开发个人博客网站——17、博客添加RSS订阅
1、RSS简介RSS(Really Simple Syndication)是一种描述和同步网站内容的格式,它采用 XML 作为内容传递的格式。简单来说就是网站可以把内容包装成符合 RSS 标准的 XML 格式文档。一旦网站内容符合一个统一的规范,那么人们就可以开发一种读取这种规范化的 XML 文档的工具来聚合各大网站的内容。例如一个读者可能关注了很多的博客网站,如果这些博客网站都支持 RSS ...原创 2018-02-04 16:54:02 · 2644 阅读 · 0 评论 -
Django开发个人博客网站——16、给博客添加上评论功能
博客中的评论系统其实是个很复杂的东西,但是网上已经有现成的轮子了,比如django-contrib-comments,可以直接拿过来用。但是我这里博客主要是给自己看的,并不想有太复杂的互动内容,因此,就自己写了个非常简答的仅能提供一级评论,且不需要注册的评论功能。1、添加评论模型评论也是需要记录在数据库中的,因此我们需要在models.py中为它创建一个模型,由于我们不提供注册服务,因...原创 2018-02-04 00:07:07 · 6721 阅读 · 2 评论 -
Django开发个人博客网站——15、通过markdown实现博客内容的展示
到现在我们已经可以实现很多功能了,包括登陆后台写博客,前端博客的展示、归档、标签云等等。但是直到现在我们的博客是没有样式的,所有的文字顺序排列,很不美观。如何才能实现博客的排版呢?还好有很多文字编辑器,我们可以使用最简单也是应用很广泛的,markdown语法。什么是markdown语法,我们的CSDN、简书、博客园等都是用的markdown语法。它规则很简单,可以参考如下资料:Markd...原创 2018-02-03 18:23:36 · 3329 阅读 · 0 评论 -
Django开发个人博客网站——14、完成博客详情页面
1、博客详情页面博客的详情页同样继承自base.html模板,可以将blog-detail.html拷贝到templates目录下。与归档、标签页面类似,按照之前的方法,分别编写视图函数与url代码:view.pyclass BlogDetailView(View): """ 博客详情页 """ def get(self, request, blog...原创 2018-02-03 17:47:58 · 3560 阅读 · 4 评论 -
Django开发个人博客网站——12、实现不同大小的标签云样式
1、创建标签页面与上一节中创建归档页面一样,这里就不再赘述了,直接给出程序代码。tags.html{% extends 'base.html' %}{% block title %}标签云{% endblock %}{% block title %}<div class="content-wrap">...{% for tag in all_tag %...原创 2018-02-03 14:58:43 · 2500 阅读 · 3 评论 -
Django开发个人博客网站——13、实现标签下所有博客的展示
上一节中我们创建了标签云,这一节我们实现点击某一个标签,可以将所有该标签下的博客展示出来的功能。tag-detail.html这个页面跟归档页面是一个样式的,所以直接将archive.html复制过来就行了。view.pyclass TagDetailView(View): def get(self, request, tag_name): tag = ...原创 2018-02-03 16:03:04 · 1905 阅读 · 0 评论 -
django学习——如何实现分页时序号的连续
在django中,一般通过自带的Paginator进行分页,具体内容可以见官方文档。我们在对数据进行循环时,如果需要标上序号,可以采用forloop方法,如下所示:{{ forloop.counter }}具体使用细节,可以见我之前的博客:采用forloop对模板中的数据进行排序然而,通过这种方法,在点击下一页后,序号还是从1开始,不能接着上一页中的最后一个的序号累加。解决思路如下:获得当前页面的原创 2018-01-27 13:49:15 · 1831 阅读 · 0 评论 -
django学习——如何实现简单的搜索功能
搜索功能的实现是用户在前端页面输入需要搜索的内容,然后通过url传递到后端,后端的视图函数从数据库中查找出指定的对象,然后在传递到前端页面的一个过程。这里主要讲视图函数中的查找过程:view.pyfrom django.db.models import Q#url 为 127.0.0.1:8000/course/list/?keywords=djangodef myapp(request):原创 2018-01-10 16:28:15 · 6703 阅读 · 2 评论 -
django学习——request用法
Django 使用Request 对象和Response 对象在系统间传递状态。当请求一个页面时,Django会建立一个包含请求元数据的 HttpRequest 对象。 当Django 加载对应的视图时,HttpRequest 对象将作为视图函数的第一个参数。每个视图会返回一个HttpResponse 对象。以下列举常用的几种属性:1、request.user一个AUTH_USER...原创 2018-01-10 15:35:38 · 5412 阅读 · 0 评论 -
Django开发个人博客网站——11、通过regroup实现博客的归档
1、创建归档页面按照首页建立的方法建立归档页面,将archive.html从模板文件中拷贝到templates目录下,并继承自base.html页面,然后建立视图函数,并通过url将两者联系起来。archive.html{% extends 'base.html' %}{% block title %}归档{% endblock %}{% block title %}...原创 2018-02-02 18:39:41 · 2571 阅读 · 1 评论 -
Django开发个人博客网站——10、分页功能的实现
现在我们的博客可能只有几篇文章,因此可以全部在首页展示出来,随着博客数量的增加,当达到几十上百篇时,全部展现在首页是不显示也是不友好的,这个时候我们就需要对博客进行分页了。django有它自带的分页功能:Paginator不过我们用在它基础上开发的另一个包:django-pure-pagination1、安装在虚拟环境中通过pip安装:pip install django-...原创 2018-02-02 17:15:18 · 3364 阅读 · 8 评论 -
Django开发个人博客网站——9、模板的继承
在编程的过程中,我们经常会重复性的写了很多的代码,比如一个页面的框架部分,这样有多少个页面就得写上多少次,这样既不好维护,也不够高效,所以我们引出了html的模板继承部分。通过观察我的博客:http://www.geerniya.cn/,我们发现,很多页面大体构造都是一样的,因此我们可以将公用的框架作为一个模板,其它页面可以继承自这个模板,然后在其基础上添加上自己的东西。新建base.ht...原创 2018-02-02 16:48:40 · 2422 阅读 · 1 评论 -
Django开发个人博客网站——8、博客首页的开发
现在我们进入博客的首页127.0.0.1:8000, 发现还是欢迎页面,因为我们还没有给博客添加任何模板,也就是前端html页面。博客前端模板托管在GitHub:django_blog_templates 将项目下载到本地后,将static文件夹整个拷贝到博客项目根目录下,然后在将index.html拷贝到templates目录下。这里的index.html就是我们博客的首页。创建视图...原创 2018-02-02 15:46:07 · 4767 阅读 · 13 评论 -
Django开发个人博客网站——7、通过admin管理后台
Django中一个最强大的部分是自动管理接口,在模型中读取元数据来提供一个强大的、生产就绪的接口,使内容提供者能立即用它向站点中添加内容,在这篇文档中,我们讨论如何去激活,使用和自定义Django的站点管理接口。创建管理员:我们在浏览器中输入http://127.0.0.1:8000/admin,便可进入到后台管理登录页面,如下图所示:此时我们还没有创建管理用户,与创建app一样,...原创 2018-02-02 13:54:15 · 3652 阅读 · 2 评论 -
Django开发个人博客网站——20、通过Django Haystack实现搜索功能(下)
1、解决博客标题只显示部分问题上一节中我们通过Django Haystac实现了博客的搜索功能,但是对于搜索结果并不太满足,因为博客的标题只能显示出部分内容。通过查看源码,我们可以解决这个问题。这部分的源码位于:虚拟环境目录\Lib\site-packages\haystack\utils\highlighting.py通过分析该源代码,我们可以看到max_length = 200...原创 2018-02-04 23:06:29 · 1891 阅读 · 2 评论 -
Django开发个人博客网站——21、实现博客的统计功能
截止到现在,我们博客已经基本实现了该有的功能,但是,我们还没有为博客添加统计功能,在首页中有显示博文的数目、分类的数目以及标签的数目,这些数目其实可以直接在视图函数中写上,然后传递到模板。例如:blog_nums = Blog.objects.count()category_nums = Category.objects.count()tag_nums = Tag.objects.co...原创 2018-02-05 13:13:14 · 2552 阅读 · 0 评论 -
django学习——pip list中出现如下警告
在pip 9.01版本中,使用pip list出现如下警告时:DEPRECATION: The default format will switch to columns in the future. You can use –format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under原创 2017-10-18 20:25:32 · 2038 阅读 · 0 评论 -
django学习——实例说明middleware中间件的用法
关于django的中间件,网上有很多详细的解释,这里我们就不在赘述了。直接给几个链接:https://blog.csdn.net/alvine008/article/details/50249777 https://www.cnblogs.com/jasonwang-2016/p/5910479.html我这里以实际工作中的某个例子来举例说明它的用法。实例一:在用django做接...原创 2018-04-16 16:12:56 · 1183 阅读 · 0 评论 -
django学习——request.POST与request.POST.get两者的不同之处
request.POST是用来接受从前端表单中传过来的数据,比如用户登录过程中传递过来的username、passwrod等字段。我们在后台进行数据获取时,有两种方法(以username为例):request.POST[‘username’]与request.POST.get(‘username’),那么这两者有什么不同之处呢?如果传递过来的数值不为空,那么这两种方法都没有错误,可以得到相...原创 2018-03-30 18:06:12 · 35566 阅读 · 2 评论 -
django学习——Django models通过DateTimeField保存到MySQL的时间的时区问题
解决办法在settings文件中设置TIME_ZONE = 'Asia/Shanghai'USE_TZ = False12转载的内容最近开始使用Django开发一些系统,在models.py中设置一些数据库表结构并给日期时间字段赋初值,不过在使用的过程中,遇到一点问题。问题是,我本来服务器使用的市区是“Asia/Shanghai”...转载 2018-03-30 17:34:55 · 4734 阅读 · 0 评论 -
django学习——常见的网站攻击的三种方式:sql注入、xss、csrf
摘要:对Web服务器的攻击也可以说是形形色色、种类繁多,常见的有挂马、SQL注入、缓冲区溢出、嗅探、利用IIS等针对Webserver漏洞进行攻击。本文结合WEB TOP10漏洞中常见的SQL注入,跨站脚本攻击(XSS),跨站请求伪造(CSRF)攻击的产生原理,介绍相应的防范方法。关键字:SQL注入,XSS,CSRF1.SQL注入 所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单原创 2018-02-23 13:38:03 · 4425 阅读 · 0 评论 -
django学习——过滤器truncatechars_html的用途详解
在之前系列文章“Django开发个人博客网站”中,我们实现了个人博客网站的开发:往事如烟的博客。但是,里面有一个小问题一直没有解决,就是在主页如何显示博文的摘要。因为我们采用markdown语法实现文章的排版,如果采用过滤器slice截取文章的前多少个字符时{{ content|safe|slice:"500" }},当恰好截取到包含有htlm标记的语法时,比如引用或图片时:<code>#配置40原创 2018-02-22 15:21:57 · 1671 阅读 · 1 评论 -
Django开发个人博客网站——31、给网站添加上404、500页面
404错误:指的是页面未找到,一般情况下都是网址出错了,或者之前的数据被删掉了。500错误:指的是服务器出错了,可能是服务器内部的程序出错了,也可能是服务器本身出错了。接下来我们为我们的网站添加上这两个页面。view.py#配置404 500错误页面def page_not_found(request): return render(request, '404.htm...原创 2018-02-06 23:06:04 · 703 阅读 · 0 评论 -
Django开发个人博客网站——1、开发环境
1、写在前面的话刚最开始自学python,然后学习django框架,中间断断续续有几个月的时间,是时候通过一个项目来检验下自己的学习成果了。既然学习了django web框架,那很自然的就是想到要搭建一个网站了,最常见的个人网站自然就是个人博客。网上有现成的博客框架,比如hexo、wordpress,直接按照他们的文档安装显然达不到django练习的目的。我选择了一个hexo下的极简主题风原创 2018-02-01 16:15:51 · 13522 阅读 · 8 评论 -
Django开发个人博客网站——30、总结
经过之前29小节的内容,我们在windows电脑上创建博客项目,并将其配置到阿里云服务器端。现在基本算是完成了,但是如果此时进行访问的话,还是显示不出我们的博客网站的,还有最后几个步骤需要设置下:修改nginx用户为root用户cd /etc/nginxvim nginx.conf将第一行的用户改为root用户,然后重启下nginxpkill -f nginxngin原创 2018-02-05 23:15:52 · 3750 阅读 · 2 评论 -
Django开发个人博客网站——29、服务器centos7安装uwsgi
nginx+uwsgi+django是我们常用的django部署方式。nginx作为最前端的服务器,他负责接收所有的客户端请求,对于请求的静态文件,由nginx服务器自己完成,因为它具有很好处理静态文件的能力,性能进行过优化,支持高并发量;uWSGI服务器作为支持服务器,是用来服务nginx的,nginx将请求的动态文件交给uWSGI进行处理。uWSGI实现了uwsgi、wsgi和http协议,u...原创 2018-02-05 22:57:59 · 1251 阅读 · 1 评论 -
Django开发个人博客网站——28、服务器centos7创建虚拟环境
1、安装virtualenv安装方法pip install virtualenv #安装到python2中pip3 install virtualenv #安装到python3中2、安装virtualenvwrapper安装方法pip install virtualenvwrapper #安装到python2中pip3 install virtuale...原创 2018-02-05 21:52:23 · 989 阅读 · 0 评论 -
Django开发个人博客网站——27、服务器centos7安装Python3.6 与 pip3
1、安装python3.6CentOS 7.2 默认安装了python2.7.5 因为一些命令要用它比如yum 它使用的是python2.7.5。我们可以通过python -V来查看Python的版本。然后使用命令 which python 查看一下Python可执行文件的位置。安装相关包yum install zlib-devel bzip2-devel openssl-de...原创 2018-02-05 20:08:36 · 2525 阅读 · 0 评论 -
Django开发个人博客网站——26、服务器centos7安装mysql
1、检查服务器版本不同系统是要安装不同的mysql包的,因此我们首先应当查看服务器系统的版本:uname -a EL is short for Red Hat Enterprise Linux (EL). EL6 is the download for Red Hat 6.x, CentOS 6.x, and CloudLinux 6.x. EL5 is the downl...原创 2018-02-05 18:34:42 · 953 阅读 · 1 评论 -
Django开发个人博客网站——25、服务器centos 7 安装nginx
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。安装nginx安装epel-release源并进行安装yum install epel-releaseyum updateyum install ...原创 2018-02-05 17:40:52 · 1108 阅读 · 0 评论 -
Django开发个人博客网站——24、服务器的远程连接管理
在我们申请好服务器之后,需要对这台服务器进行远程操作。我们通过xshell软件进行远程连接。1、通过xshell远程连接首先在本机上下载xshell软件,我这里用的是xshell5,安装好后,点击文件–>新建,如下所示: 名字随便起,主机IP一定是公网IP,阿里云服务器会给你两个ip,一个公,一个私。如果是安装在虚拟机中的服务器,可以通过ifconfig命令查找到本地ip地...原创 2018-02-05 16:20:10 · 1161 阅读 · 0 评论 -
Django开发个人博客网站——32、启用Let's Encrypt免费的HTTPS证书
我这个博客网站刚搭建起来第二天,在手机端打开的时候就出现了这个抢红包的广告。还以为我的网站刚建成就被攻击了?中毒了?劫持了?……于是赶紧在网上一通搜,最后发现原来是因为网站采用的HTTP协议,传输过程都是明文的,很容易被运营商劫持,我这个广告应该就是运营商给加上去的。解决办法很简单,我们采用将网站的协议改为HTTPS就可以了,HTTPS多了个S,也就是Secure。传输过程是通过密文传输的...原创 2018-02-10 13:38:14 · 1658 阅读 · 0 评论 -
Django开发个人博客网站——23、域名申请、备案与服务器的选择
经过前面22小节,我们已经将自己的博客网站搭建完成了,但是只能在本机通过127.0.0.1:8000进行访问,那么如何才能够让别人通过登录自己的网站,在外网也能够访问自己的博客呢?为了完成这个目的,我们需要做如下两点才行:有自己的网站域名,也就是www开头的网址将自己的网站部署到服务器上这里我们首先申请自己的域名并完成备案过程。1、域名的申请博主这里是从阿里云上进行域名的...原创 2018-02-05 15:25:03 · 1888 阅读 · 0 评论 -
Django开发个人博客网站——22、博客的最后完善
至此,我们已经基本完成了博客的所有功能。最后在对博客的一些细节进行完善下就可以了。搜索页面内容的添加搜索页面的视图函数是在haystack中写好的,如果我们想要给页面传递数据,需要将内容写到视图函数的extra_context函数中:class MySearchView(SearchView): def extra_context(self): conte...原创 2018-02-05 13:59:27 · 3606 阅读 · 0 评论 -
Django开发个人博客网站——6、博客网站数据库的设计
我们先从功能上分析,看看这个博客网站需要建立哪些表,每个表中都需要什么字段。首先,最主要的是我们的博客表,名字可以直接叫做Blog,这个表中,肯定要包括以下几点:博客的标题、博客的内容、博客的发表时间、博客的修改时间、博客的分类、博客的点击量。当然,一般情况下还要有博客的作者,因为我们整个网站都是只有我们自己一个人,也就是不包含其它用户,因此作者这里就可以不写了。针对博客的分类,我们可以参考c...原创 2018-02-02 01:00:37 · 6743 阅读 · 3 评论 -
Django开发个人博客网站——5、创建第一个app
1、创建appdjango中的一个app就是一个小的项目,我们通过startapp命令即可创建。可以进入虚拟环境myblog中执行:python manage.py startapp myblog也可以直接在pycharm中的Tools下的run manage.py task下直接执行命令:startapp myblog这样就可以创建出一个根目录下的名为myblog的a...原创 2018-02-01 23:49:24 · 3784 阅读 · 2 评论