Django-共享模板使用

项目结构

Django-共享模板使用

主要内容

Models 内容

from django.db import models

# Create your models here.
from django.utils import timezone

# Create your models here.

class Post(models.Model):
    title = models.CharField(max_length=200 ,null=False)
    slug = models.CharField(max_length=200 ,null=False)
    body = models.TextField(null=False)
    pub_date = models.DateTimeField(default=timezone.now)

Views内容

from django.shortcuts import render
from django.http import HttpResponse
from django.shortcuts import redirect
from django.template.loader import  get_template
from datetime import datetime
from .models import Post
# Create your views here.

def homepage(request):
    template = get_template('index.html')
    html = template.render(locals())
    return HttpResponse(html)

def index(request):
    template = get_template('index.html')
    posts = Post.objects.all()
    now = datetime.now()
    html = template.render(locals())
    return HttpResponse(html)

def home(request):
    template = get_template('home.html')
    posts = Post.objects.all()
    now = datetime.now()
    html = template.render(locals())
    return HttpResponse(html)

def showpost(request,slug):
    template = get_template('post.html')
    try:
        post = Post.objects.get(slug = slug)
        if post != None:
            html = template.render(locals())
            return HttpResponse(html)
    except:
        return redirect('/')

def showdetail(request,slug):
    template = get_template('show.html')
    try:
        post = Post.objects.get(slug = slug)
        if post != None:
            html = template.render(locals())
            return HttpResponse(html)
    except:
        return redirect('/')

URL内容


from django.contrib import admin
from django.urls import path
from django.conf.urls import include,url
from mblog import views

urlpatterns = [
    #url(r'^$', views.homepage),
    #url(r'^$',  views.index),
    url(r'^$',  views.home),
    #url(r'^post/(\w+)$', views.showpost),
    url(r'^post/(\w+)$', views.showdetail),
    path('admin/', admin.site.urls),
]

模板文件内容

base.html内容

<!-- base.html -->
<!DOCTYPE html>
{% load staticfiles %}
<html>
<head>
    <meta charset='utf-8'>
    <title>
        {% block title %} {% endblock %}
    </title>
<!-- Latest compiled and minified CSS -->

<link rel="stylesheet" href="{%  static "css/bootstrap.min.css" %}"  crossorigin="anonymous">
<!-- Optional theme -->
<link rel="stylesheet" href="{% static "css/bootstrap-theme.min.css" %}"  crossorigin="anonymous">
<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
</head>
<body>
    <div class='container-fluid'>
        {% include 'header.html' %}
        <div class='row'>
            <div class='col-sm-4 col-md-4'>
                <div class='panel panel-default'>
                    <div class='panel-heading'>
                        <h3>
                            MENU
                        </h3>
                    </div>
                    <div class='panel-body'>
                        <div class='list-group'>
                            <a href='/' class='list-group-item'>HOME</a>
                            <a href='/admin' class='list-group-item'>管理页面 </a>
                            <a href='http://tar.so/news' class='list-group-item'>实时新闻</a>
                            <a href='http://drho.tw/news' class='list-group-item'>电视新闻</a>
                        </div>
                        <script type="text/javascript" src="http://feedjit.com/serve/?vv=1515&amp;tft=3&amp;dd=0&amp;wid=&amp;pid=0&amp;proid=0&amp;bc=FFFFFF&amp;tc=000000&amp;brd1=012B6B&amp;lnk=135D9E&amp;hc=FFFFFF&amp;hfc=2853A8&amp;btn=C99700&amp;ww=190&amp;wne=6&amp;srefs=0"></script><noscript><a href="http://feedjit.com/">Live Traffic Stats</a></noscript>
                    </div>
                </div>
            </div>
            <div class='col-sm-8 col-md-8'>
                <div class='panel panel-default'>
                    <div class='panel-heading'>
                        {% block headmessage %} {% endblock %}
                    </div>
                    <div class='panel-body'>
                        {% block content %} {% endblock %}
                    </div>
                    <div class='panel-footer'>
                        {% include 'footer.html' %}
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>

Home.html内容


<!-- index.html -->
{% extends 'base.html' %}
{% block title %} 欢迎光临我的博客 {% endblock %}
{% block headmessage %}

    <h3 style='font-family:楷体;'>本站文章列表</h3>
{% endblock %}
{% block content %}
    {% for post in posts %}
        <div class='panel panel-default'>
            <div class='panel-heading'>
                <p style='font-family:微软雅黑;font-size:14pt;font-weight:bold;'>
                    <a href='/post/{{post.slug}}'>{{ post.title }}</a>
                </p>
            </div>
            <div class='panel-body' style='background-color:#ffffdd'>
                <p>
                   {{ post.body | truncatechars:40 }}
                </p>
            </div>
            <div class='panel-footer'  style='background-color:#efefef'>
                <p>
                    发布时间:{{ post.pub_date | date:"Y M d, h:m:s"}}
                </p>
            </div>
        </div>
        <br>
    {% endfor %}
{% endblock %}

header.html 内容



{% load staticfiles %}
<div class='well'>
    <table>
        <tr>
            <td><img src="{% static "images/logo.png" %}"> </td>
            <td> &nbsp;&nbsp;</td>
            <td>
               <h2>内蒙古西贝餐饮集团有限公司</h2>
            </td>
        </tr>
    </table>
</div>

footer.html



{% block footer %}
   {% if now %}
       <p>页脚显示内容,现在时刻:{{ now }}</p>
    {% else %}
        <p>本文内容取自练习,如有侵权请来信通知下架...</p>
    {% endif %}
{% endblock %}