博客开发简记(4):博客的个性化配置
- 2019 年 10 月 15 日
- 筆記
先声明,由于我使用的是djangoblog项目,也就是这个:https://github.com/liangliangyy/DjangoBlog ,所以以下都是基于它的修改。
我的博客不需要太复杂,至少现在不需要,但一些基本的东西是要的,下面就逐一改一下吧。
现在我的博客主打“逻辑思维”,访问一下: www.freep2p.cn ,大概是这个样子:
然后我要对它进行改造了。
(1)四个tag
我希望看到四个tab:“首页”、“逻辑测试题”、“趣味题”跟“心理测试题”。如何修改呢?
默认的界面是有一个“归档”tag的,把它去掉,找到界面文件 templates/share_layout/nav.html ,:
<li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children"> <a href="{% url "blog:archives" %}">文章归档</a> </li>
把这一段注释或去掉。同时,把“首页”改名为我想要的“all”:
<a href="{{ SITE_BASE_URL }}">all</a></li>
然后,对于新增的tag,只需要通过后台管理(用admin登陆到网站),在“分类”的地方,增加另两个tab即可。
浏览器刷新缓存,请求一下,效果如下(好吧你只看到三个tag,是我截图的问题):
(2)把侧边栏去掉
现在先不要侧边栏,虽然以后有可能加上,怎么去掉呢?
侧边栏是一个界面,对应的html是: templates/blog/tags/siderbar.html ,逻辑上,一定是加载了这个html,那不加载它就好啦。
blog/templatetags/blog_tags.py,这个文件涉及到tags,还有侧边栏,留意这句:
@register.inclusion_tag(‘blog/tags/sidebar.html’)
紧接着的函数load_sidebar,是给界面提供数据的,注意,即使不提供数据,只要加载了html,那侧边栏还是会出现。所以,这个地方是提供数据的,不是加载的地方,那在哪里加载呢?
在“主界面”即templates/share_layout/base.html中,这一段:
{% block sidebar %} {% endblock %}
把这个block去掉,不再加载侧边栏了,效果如下:
(3)去掉底部不必要的信息
同样在主界面base.html中操作,把下面这句去掉:
{% include ‘share_layout/footer.html’ %}
这时不再显示footer,效果如下:
(4)统计
对于pv、ip来源等网站访问信息,我们是感兴趣的,于是统计就有必要,但不必自己实现统计了,委托给别人来做也可以,比如使用“百度统计”。搜索“百度统计”,注册一个统计账号(之后用它来看数据),登陆页面如下:
https://tongji.baidu.com/web/welcome/login
登陆之后,“新增网站”,填好信息,确认后生成统计代码。然后,拷贝统计代码,在base.html的前面,加入统计代码。之后,就可以在百度统计后台查看你的网站数据了。
(5)注册与登陆
首先,在settings.py中,改为非debgu状态,否则激活邮件发不出:
DEBUG = False
可以,我不想使用发送邮件激活的方式,因为过于麻烦,直接快速注册账号即可,如何修改?
浏览器以form方式把注册信息也就是一些变量值提交给nginx,nginx解释表单,然后初始化各个input的变量值,再调用python解释器来执行python代码并传入变量值。所以关键是,处理注册信息的python代码是哪个呢,它会提示email重复之类的动作,也发送激活邮件等动作。
accounts/urls.py,这个文件,指定了不同页面请求下,调用哪个python处理代码,对于“注册”,调用的是accounts/views.py文件中的RegisterView。
RegisterView.form_valid处理提交的注册信息,把user置为未激活状态,再发送激活邮件,然后跳转到‘result’页面,提示已经发送激活邮件。
对于激活链接,大概是这样的:
http://www.freep2p.cn/account/result.html?type=validation&id=9&sign=5862756866a59c3be805cfc80660baca
RegisterView.form_valid,以及在请求激活链接时,都将调用到views.py中的account_result,此函数返回注册结果页面,比如成功或提示邮箱激活等。
修改办法:
- RegisterView.form_valid不发送激活邮件,仍跳转到’result’页面,但只提示“注册成功”。
- RegisterView.form_valid跳转到’result’页面使用的参数type值改为validation,再加上sign参数。
templates/account下面的文件,比如registration_form.html、login.html以及result.html,就是界面了,你可以修改一下,至少文字要改成中文吧。对于input控件,出现在accounts/forms.py文件,你可以把提示改成中文。
最后,接收错误信息的邮箱也应修改成你自己的,在settings.py中如下修改,注意要在supervisor配置中添加环境变量(上节有介绍):
EMAIL_HOST = ‘smtp.126.com’
EMAIL_PORT = 587
EMAIL_HOST_USER = os.environ.get(‘DJANGO_EMAIL_USER’)
EMAIL_HOST_PASSWORD = os.environ.get(‘DJANGO_EMAIL_PASSWORD’)
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
SERVER_EMAIL = os.environ.get(‘DJANGO_EMAIL_USER’)
(6)调整侧边栏
最终发现,有个侧边栏会方便很多,比如可以退出登陆,但要减少一些内容,怎么处理?
还是它的界面:templates/blog/tags/siderbar.html,在里面改一下,达到你想要的效果呗。
(7)上传图片
在编辑文章时上传图片,再正常不过的要求。djangoblog允许上传文件到服务器,但要注意,在settings.py的最后面是这两行:
MEDIA_ROOT = os.path.join(SITE_ROOT, ‘uploads’)
MEDIA_URL = ‘/media/’
上传到uploads/editor/目录,那请求也要从uploads目录获取,要把第二行的’media’改成’uploads’。
(8)让百度收录你的网站
为了让别人在baidu搜索时能看到你的网站,你可以主动给百度提供你的网站,地址:
https://ziyuan.baidu.com/linksubmit/url
提交你的网站首页即可。
最终,我的博客( www.freep2p.cn )是这个样子的: