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&tft=3&dd=0&wid=&pid=0&proid=0&bc=FFFFFF&tc=000000&brd1=012B6B&lnk=135D9E&hc=FFFFFF&hfc=2853A8&btn=C99700&ww=190&wne=6&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> </td> <td> <h2>内蒙古西贝餐饮集团有限公司</h2> </td> </tr> </table> </div>
footer.html
{% block footer %} {% if now %} <p>页脚显示内容,现在时刻:{{ now }}</p> {% else %} <p>本文内容取自练习,如有侵权请来信通知下架...</p> {% endif %} {% endblock %}