利用django创建一个简易的博客网站的示例


Posted in Python onSeptember 29, 2020

一、页面实现

index.html
base.html
post.html
header.html
footer.html

<!-- index.html-->
{% extends 'base.html' %}
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>个人博客</title>
</head>
<body>
<h1>欢迎来到我的博客</h1>
{% for post in posts %}
  <hr>
  <p style="font-family: 微软雅黑 ">
  <a href="/post/{{ post.slug }}" rel="external nofollow" rel="external nofollow" >{{ post.title }}</a>
  </p>
{% endfor %}
<br>
{{ now }}
</body>
</html>
<div class="mainContext">
  <div class="rightContext">
    {% block title %}欢迎来到我的博客{% endblock %}
    {% block headmessage %}<h3 style="font: 微软雅黑;">文章列表</h3>{% endblock %}
    {% block content %}
    <ul>
      {% for post in posts %}
        <p>
          <li><a href="/post/{{ post.slug }}" rel="external nofollow" rel="external nofollow" >{{ post.title }}</a></li>
        </p>
      {% endfor %}
    </ul>
    {% endblock %}
</div>
</div>
<!-- base.html-->
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>{% block title %} {% endblock %}</title>
</head>
<body>
<div class="mainContext">
  <div class="leftContext">
    <h3 style="font: 微软雅黑;">文章分类</h3>
    <ul>
      <li><a href="/tag/?p=唐诗" rel="external nofollow" >唐诗</a></li>
      <li><a href="/tag/?p=宋词" rel="external nofollow" >宋词</a></li>
      <li><a href="/tag/?p=五言古诗" rel="external nofollow" >五言古诗</a></li>
    </ul>
  </div>
  <div class="rightContext">
    <div class="top1">
    {% include 'header.html' %}
  </div>
  <div class="mid2">
    {% block headmessage %} {% endblock %}
    {% block content %} {% endblock %}
  </div>
  <div class="bot3">
    <br/>
    {% include 'footer.html' %}
  </div>
  </div>
</div>
</body>
</html>
<!-- post.html-->
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>post</title>
</head>
<body>
<a href="http://localhost:8000/" rel="external nofollow" >返回上一页</a><br/>
{{ post.body }}
</body>
</html>
<!-- footer.html-->
{% block footer %}
  {% if now %}
    <p style="font-family: 微软雅黑">时间:{{ now }}</p>
  {% else %}
    <p style="font-family: 微软雅黑">如需转载请注明来源</p>
  {% endif %}
{% endblock %}

models.py 数据表的设计

from django.db import models
from django.utils import timezone
from tinymce.models import HTMLField
# Create your models here.
class Post(models.Model):
  title = models.CharField(max_length = 200,verbose_name=u'标题')#标题
  slug = models.CharField(max_length=200,verbose_name=u'文章网址')#文章网址
  body = models.TextField()#文章内容
  tags = models.CharField(max_length=100, verbose_name=u'标签')
  pub_date = models.DateTimeField(default = timezone.now)#发表时间

  #pub_date 以timezone.now的方式让其自动产生时间 在执行需要pytz模块支撑
  class Meta:
    db_table = '博客'
    ordering = ['pub_date']#按照发表时间排序显示顺序依据
    def __str__(self):#设置此类所提供的数据项,显示文章标题
      return self.title

数据表的迁移 在cmd中执行

python manage.py makemigrations
python manage.py migrate

views.py 方法的实现

#初始页面 显示所有文章列表
def homepage(request):
  posts = Post.objects.all().order_by('-pub_date')
  return render(request, 'index.html', locals())
  now = datetime.now()
  #显示文章内容
def show_detail(request,slug):
  try:
    post = Post.objects.get(slug = slug)
    if post != None:
      return render(request,'post.html',locals())
  except:
    return redirect('/')#返回首页
#在views中调用属于同一个标签文章
def search_tag(request): #tag在URL中获取
  tag = request.GET.get('p')
  print(tag)
  try:
    posts = Post.objects.filter(tags=tag)#注意这里写的是filter
    if posts != None:#这里使用的是posts,和index.html中对应
      return render(request,'index.html',locals())
  except:
    print('没找到')

url.py在url中注册路径

from django.conf.urls import url, include
from django.contrib import admin
from django.urls import path
from myblogs import views
#import tinymce
urlpatterns = [
  path('', views.homepage),#进入系统主页
  path('admin/', admin.site.urls),#进入管理员页面
  path('post/<slug:slug>/',views.show_detail),#显示详细信息# 定义拼接地址,获取标签信息  
  url(r'^tag/$', views.search_tag)#注意这里使用的是url 和正则表达式 需要前文中引入
  #url(r'^tinymce/', include('tinymce.urls')), # 这是富文本编辑器
]

在界面中添加css或者是图片

配置setting

STATIC_URL = '/static/'
STATICFILES_DIRS = [
  os.path.join(BASE_DIR, 'static'),
]

在界面中引入

1.方法一
{% load staticfiles %}
<title>{% block title %} {% endblock %}</title>
2.方法二
{% load staticfiles %}
<link rel="stylesheet" href="{% static 'index.css' %}" rel="external nofollow" >

以上就是利用django创建一个简易的博客网站的示例的详细内容,更多关于django创建网站的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python实现获取操作系统版本信息方法
Apr 08 Python
python append、extend与insert的区别
Oct 13 Python
你所不知道的Python奇技淫巧13招【实用】
Dec 14 Python
python tensorflow学习之识别单张图片的实现的示例
Feb 09 Python
Pyinstaller将py打包成exe的实例
Mar 31 Python
python matplotlib绘图,修改坐标轴刻度为文字的实例
May 25 Python
python3 对list中每个元素进行处理的方法
Jun 29 Python
Python中的random.uniform()函数教程与实例解析
Mar 02 Python
手把手教你进行Python虚拟环境配置教程
Feb 03 Python
在pycharm中为项目导入anacodna环境的操作方法
Feb 12 Python
Python基于BeautifulSoup爬取京东商品信息
Jun 01 Python
pytorch中的weight-initilzation用法
Jun 24 Python
如何基于Python实现word文档重新排版
Sep 29 #Python
python实现简单贪吃蛇游戏
Sep 29 #Python
python爬虫---requests库的用法详解
Sep 28 #Python
如何在scrapy中捕获并处理各种异常
Sep 28 #Python
python向企业微信发送文字和图片消息的示例
Sep 28 #Python
python利用tkinter实现图片格式转换的示例
Sep 28 #Python
python在CMD界面读取excel所有数据的示例
Sep 28 #Python
You might like
PHP类的反射用法实例
2014/11/03 PHP
PHP实现动态web服务器方法
2015/07/29 PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
2018/05/24 PHP
Firefox div高度自适应
2009/04/28 Javascript
jquery tools系列 expose 学习
2009/09/06 Javascript
javascript,jquery闭包概念分析
2010/06/19 Javascript
jquery中.add()的使用分析
2013/04/26 Javascript
使用时间戳解决ie缓存的问题
2014/08/20 Javascript
Bootstrap组件学习之导航、标签、面包屑导航(精品)
2016/05/17 Javascript
Bootstrap3学习笔记(三)之表格
2016/05/20 Javascript
浅析jquery unbind()方法移除元素绑定的事件
2016/05/24 Javascript
js验证框架之RealyEasy验证详解
2016/06/08 Javascript
jquery常用的12个小功能
2016/07/22 Javascript
基于jQuery实现多标签页切换的效果(web前端开发)
2016/07/24 Javascript
BootStrap Fileinput初始化时的一些参数
2016/12/30 Javascript
详谈表单重复提交的三种情况及解决方法
2017/08/16 Javascript
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
2017/12/06 Javascript
vue中实现在外部调用methods的方法(推荐)
2018/02/08 Javascript
element-ui的回调函数Events的用法详解
2018/10/16 Javascript
详解用Webpack与Babel配置ES6开发环境
2019/03/12 Javascript
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
解决vuecli3中img src 的引入问题
2020/08/04 Javascript
小程序中手机号识别的示例
2020/12/14 Javascript
python斐波那契数列的计算方法
2018/09/27 Python
python判断输入日期为第几天的实例
2018/11/13 Python
Python的高阶函数用法实例分析
2019/04/11 Python
Python实现动态给类和对象添加属性和方法操作示例
2020/02/29 Python
python图片剪裁代码(图片按四个点坐标剪裁)
2020/03/10 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
2021/01/29 Python
上海中网科技笔试题
2012/02/19 面试题
走进敬老院活动总结
2014/07/10 职场文书
初中教师个人工作总结
2015/02/10 职场文书
合作与交流自我评价
2015/03/09 职场文书
如何写新闻稿
2015/07/18 职场文书
老干部局2015年度工作总结
2015/10/22 职场文书
Pytorch中Softmax和LogSoftmax的使用详解
2021/06/05 Python