前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django+Bootstrap+Mysql 搭建个人博客(五)

Django+Bootstrap+Mysql 搭建个人博客(五)

作者头像
zhang_derek
发布2018-05-30 14:15:05
6870
发布2018-05-30 14:15:05
举报
文章被收录于专栏:有趣的django

5.1.自定义403,404和500页面

(1)website/urls.py

代码语言:javascript
复制
from blog import views as blog_views

handler403 = blog_views.permission_denied
handler404 = blog_views.page_not_found
handler500 = blog_views.page_error

(2)views.py

代码语言:javascript
复制
def permission_denied(request):
    '''403'''
    return render(request, 'blog/403.html', locals())


def page_not_found(request):
    '''404'''
    return render(request, 'blog/404.html', locals())


def page_error(request):
    '''500'''
    return render(request, 'blog/500.html', locals())

还要改detail的view

 (3)403,404,500页面

代码语言:javascript
复制
{% extends 'blog/base.html' %}
{% block title %}403{% endblock %}

{% block content %}
    <section class="container text-center" style="min-height:600px;">
        <h1>403, Forbidden!</h1>
        <p>你没有权限访问该页面</p>
        <a class="btn btn-primary" href="{% url 'blog:blog_index' %}">返回主页</a>
    </section>
{% endblock %}
代码语言:javascript
复制
{% extends 'blog/base.html' %}
{% block title %}404{% endblock %}

{% block content %}
    <div class="container text-center" style="min-height:600px;">
        <h1>404, Page not Found!</h1>
        <h2>页面不存在!</h2>
        <a class="btn btn-primary" href="{% url 'blog:blog_index' %}">返回主页</a>
    </div>
{% endblock %}
代码语言:javascript
复制
{% extends 'blog/base.html' %}
{% block title %}500{% endblock %}

{% block content %}
    <section class="container text-center" style="min-height:600px;">
        <h1>500, Page Error!</h1>
        <p>服务器错误!</p>
        <a class="btn btn-primary" href="{% url 'blog:blog_index' %}">返回主页</a>
    </section>
{% endblock %}

生成环境下才有效:DEBUG = False

5.2.sitemap(站点地图)

(1)settings.py

代码语言:javascript
复制
INSTALLED_APPS = [
        'django.contrib.sitemaps',
]

(2)web/urls.py

代码语言:javascript
复制
from django.contrib.sitemaps import GenericSitemap
from django.contrib.sitemaps.views import sitemap
from blog.models import Entry

info_dict = {
    'queryset': Entry.objects.all(),
    'date_field': 'modifyed_time'
}


url(r'^sitemap\.xml$', sitemap, {'sitemaps': {'blog': GenericSitemap(info_dict, priority=0.6)}},
      name='django.contrib.sitemaps.views.sitemap'),       #站点地图
代码语言:javascript
复制
from django.conf.urls import url,include
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
from blog.feed import LatestEntriesFeed
from blog import views as blog_views

from django.contrib.sitemaps import GenericSitemap
from django.contrib.sitemaps.views import sitemap
from blog.models import Entry

info_dict = {
    'queryset': Entry.objects.all(),
    'date_field': 'modifyed_time'
}

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^blog/',include('blog.urls') ),
    url(r'^latest/feed/$', LatestEntriesFeed()),    #RSS订阅
    url(r'^sitemap\.xml$', sitemap, {'sitemaps': {'blog': GenericSitemap(info_dict, priority=0.6)}},
      name='django.contrib.sitemaps.views.sitemap'),       #站点地图
] + static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT )        #添加图片的url

handler403 = blog_views.permission_denied
handler404 = blog_views.page_not_found
handler500 = blog_views.page_error

(3)访问地址:http://127.0.0.1:8000/sitemap.xml

5.3.博客详情页目录

(1)right_site_bar.html

因为只有详情页右边才显示目录,主页不显示,在right_side_bar.html添加一个block

 (2)detail.html

代码语言:javascript
复制
 <div class="col-md-3">
                {% block toc %}
                    <div class="row">
                        <div class="widget">
                            <h3>博客目录</h3>
                            {{ entry.toc|safe }}
                        </div>
                    </div>
                {% endblock %}
                {% include 'blog/right_site_bar.html' %}
            </div>

把之前在正文里面显示的目录删了,只要右侧显示目录就行了

5.4.返回顶部功能

(1)base.html

代码语言:javascript
复制
  <div id="back-to-top">
        <i class="glyphicon glyphicon-arrow-up"></i>
    </div>

(2)css代码 

base.html引用

代码语言:javascript
复制
<link href="{% static 'blog/css/back-to-top.css' %}" rel="stylesheet">

blog/css/back-top-css.css代码

代码语言:javascript
复制
#back-to-top {
    box-shadow: 5px 5px 5px #888888;
    border-radius: 2px;
    position: fixed;
    bottom: 70px;
    right: 70px;
    color: whitesmoke;
    background: #3ac57d;
    width: 50px;
    height: 50px;
    text-align: center;
}

#back-to-top i {
    font-size: 30px;
    margin: 10px auto;
}

(3)js代码

base.html

代码语言:javascript
复制
 <script>
    $("#back-to-top").click(function () {
        window.scrollTo(0,0);
    });
 </script>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-05-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 5.1.自定义403,404和500页面
  • 5.2.sitemap(站点地图)
  • 5.3.博客详情页目录
  • 5.4.返回顶部功能
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档