Django 个人博客 - 静态文件和模板文件 - step2

1 知识点

  1. 将静态文件和模板文件整合到项目
  2. 模板的规划与设计

本次用到的前端HTML素材下载: 前端素材

2 详细步骤:

2.1 将模板文件整合到项目中并测试

先将静态文件和模板文件放到对应的目录

Paste_Image.png

配置项目设置文件【settings.py】

INSTALLED_APPS = [
    'blog',  # 将新建的app注册到项目中
]

TEMPLATES = [
    {
        'DIRS': [
            os.path.join(BASE_DIR, 'templates'),  # 模板文件的路径设置
        ],
    },
]

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),  # 静态文件路径设置
)

视图函数views的设置【views.py】

def index(request):
    return render(request, 'index.html', locals())

路由urls的设置【urls.py】
这里顺便优化下路由的代码,将blog这个app相关的urls单独放在app的【urls.py】中


# django_blog的【urls.py】设置
from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'', include('blog.urls'))

]

# blog的【urls.py】设置
from django.conf.urls import url
from blog.views import index

urlpatterns = [
    url(r'^$', index, name='index'),

]

重新启动服务访问 http://127.0.0.1:8000/ 如果看到一下界面说明静态文件和模板文件的路径设置正常

没有加载样式的页面

2.2 引入css、js和img文件

静态文件路径修改【****.html】,包括link中的href、script中的src、img中的src

{% load staticfiles %}
<link href="{% static 'css/index.css' %}" rel="stylesheet">
<script type="text/javascript" src="{% static 'js/jquery.min.js' %}"></script>
![]({% static 'images/a1.jpg' %})
加载样式的页面

2.3 模板规划与设计

如规划设计图片显示的内容

  1. 将整个网站分成1和2大部分:第1部分是base模板中相对固定的部分,第2部分是经常需要变更的部分。
  2. 将第1部分再划分成ABCDEF:都是相对独立的部分,通过include方法引入
规划设计

2.3.1 将整个网站分成2大部分

# [base.html]
{% load staticfiles %}
<!doctype html>
<html>
<head>
    {% block custom_css %}{% endblock %}
    {% block custom_js %}{% endblock %}
</head>
<body>
<article>
    <div class="l_box f_l">
        {% block left_content %}{% endblock %}
    </div>
</article>
</body>

# [index.html]
{% extends 'base.html' %}
{% load staticfiles %}
{% block left_content %}
    ...(文章部分内容)
{% endblock %}

2.3.2 将第1部分再划分成ABCDEF

# [base.html]
<header>
        {% include 'baseblock/ads.html' %}
</header>
<article>
    <div class="l_box f_l">
        {% block left_content %}{% endblock %}
    </div>
    <div class="r_box f_r">
        {% include 'baseblock/about.html' %}
        {% include 'baseblock/charts.html' %}
        {% include 'baseblock/tags.html' %}
        {% include 'baseblock/sorts.html' %}
        {% include 'baseblock/links.html' %}
    </div>
</article>

将对应的代码放到对应的模板文件里面


tags.html

2.4 上下文全局变量

这里会定义一些全部页面都要加载的变量。例如:

  1. base模板里面的一些标题、链接等,方便全局修改
  2. 分页类和分页的数据(后面讲解)

定义一个全局变量的函数,将函数中的变量返回【views.py】

from django.conf import settings


# 全局的settings文件的配置
def global_setting(request):
    # settings中站点基本信息的配置
    site_name = settings.SITE_NAME
    site_desc = settings.SITE_DESC
    weibo_sina = settings.WEIBO_SINA
    weibo_tencent = settings.WEIBO_TENCENT
    pro_rss = settings.PRO_RSS
    pro_mail = settings.PRO_EMAIL
    return locals()

将views中定义的函数加入到上下文到处理器中【settings.py】

TEMPLATES = [
    {
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'blog.views.global_setting',  # 将全局变量加入到上下文处理器中
            ],
        },
    },
]

# 网站基本信息配置

SITE_NAME = u'Spareribs的个人博客'
SITE_DESC = u'梦虽虚幻,却是自己的梦想;位虽低微,却是自己的岗位;屋虽简陋,却是自己的家;志虽渺小,却是自己的追求。'
WEIBO_SINA = u'http://weibo.com/'
WEIBO_TENCENT = u'http://weibo.com/'
PRO_RSS = u'http://weibo.com/'
PRO_EMAIL = u'370835062@qq.com'

在前端相当于一个变量来使用,前端会渲染成settings中配置的内容【**.html】

# base.html
<header>
    <div class="logo">
        <h1>{{ site_name }}</h1>
        <p>{{ site_desc }}</p>
    </div>
        {% include 'baseblock/ads.html' %}
</header>

# about.html
<div class="tit01">
    <h3>关注我</h3>
    <div class="gzwm">
        <ul>
            <li><a class="xlwb" href="{{ weibo_sina }}" target="_blank">新浪微博</a></li>
            <li><a class="txwb" href="{{ weibo_tencent }}" target="_blank">腾讯微博</a></li>
            <li><a class="rss" href="{{ pro_rss }}" target="_blank">RSS</a></li>
            <li><a class="wx" href="mailto:{{ pro_mail }}">邮箱</a></li>
        </ul>
    </div>
</div>
完成小demo

相关下载

前端html
静态文件和模板文件_代码


欢迎留言,博文会持续更新~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容