利用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之使用Python查询更新数据库
Nov 25 Python
python对html代码进行escape编码的方法
May 04 Python
Python实现计算圆周率π的值到任意位的方法示例
May 08 Python
Python使用分布式锁的代码演示示例
Jul 30 Python
Python3+Requests+Excel完整接口自动化测试框架的实现
Oct 11 Python
Python实现链表反转的方法分析【迭代法与递归法】
Feb 22 Python
Python 如何对文件目录操作
Jul 10 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
Sep 01 Python
python 利用Pyinstaller打包Web项目
Oct 23 Python
Python jieba库分词模式实例用法
Jan 13 Python
Python 图片处理库exifread详解
Feb 25 Python
python 如何获取页面所有a标签下href的值
May 06 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合并数组array_merge函数运算符加号与的区别
2008/10/31 PHP
php xml留言板 xml存储数据的简单例子
2009/08/24 PHP
PHP多进程编程总结(推荐)
2016/07/18 PHP
CI框架实现优化文件上传及多文件上传的方法
2017/01/04 PHP
PHP基于进程控制函数实现多线程
2020/12/09 PHP
json简单介绍
2008/06/10 Javascript
JS小框架 fly javascript framework
2009/11/26 Javascript
JS小游戏之极速快跑源码详解
2014/09/25 Javascript
angularjs中的单元测试实例
2014/12/06 Javascript
全面解析bootstrap格子布局
2016/05/22 Javascript
jQuery实例—选项卡的简单实现(js源码和jQuery)
2016/06/14 Javascript
Jquery AJAX POST与GET之间的区别详细介绍
2016/10/17 Javascript
javascript工厂模式和构造函数模式创建对象方法解析
2016/12/30 Javascript
jQuery实现弹幕效果
2017/02/17 Javascript
详谈js模块化规范
2017/07/07 Javascript
微信小程序实现的picker多级联动功能示例
2019/05/23 Javascript
在nuxt中使用路由重定向的实例
2020/11/06 Javascript
python通过加号运算符操作列表的方法
2015/07/28 Python
Python用zip函数同时遍历多个迭代器示例详解
2016/11/14 Python
python3 遍历删除特定后缀名文件的方法
2018/04/23 Python
Python 生成一个从0到n个数字的列表4种方法小结
2019/11/28 Python
如何基于线程池提升request模块效率
2020/04/18 Python
matplotlib subplot绘制多个子图的方法示例
2020/07/28 Python
基于Python实现体育彩票选号器功能代码实例
2020/09/16 Python
基于python+selenium自动健康打卡的实现代码
2021/01/13 Python
美国南加州的原创极限运动潮牌:Vans(范斯)
2016/08/05 全球购物
JD Sports瑞典:英国领先的运动时尚商店
2018/01/28 全球购物
如何写出好的Java代码
2014/04/25 面试题
思想汇报范文
2013/11/04 职场文书
生物专业个人自荐信范文
2013/11/29 职场文书
中层竞聘演讲稿
2014/01/09 职场文书
医科大学毕业生自荐信
2014/02/03 职场文书
社区母亲节活动方案
2014/03/05 职场文书
女生节标语
2014/06/26 职场文书
家长对孩子的寒假评语
2015/10/09 职场文书
MongoDB使用profile分析慢查询的步骤
2021/04/30 MongoDB