利用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的Django框架中的数据过滤功能
Jul 17 Python
快速了解Python中的装饰器
Jan 11 Python
Django学习教程之静态文件的调用详解
May 08 Python
浅述python中深浅拷贝原理
Sep 18 Python
python查找指定文件夹下所有文件并按修改时间倒序排列的方法
Oct 21 Python
Django unittest 设置跳过某些case的方法
Dec 26 Python
Python爬虫实战之12306抢票开源
Jan 24 Python
关于python中plt.hist参数的使用详解
Nov 28 Python
Python 去除字符串中指定字符串
Mar 05 Python
Python响应对象text属性乱码解决方案
Mar 31 Python
python退出循环的方法
Jun 18 Python
Jmeter HTTPS接口测试证书导入过程图解
Jul 22 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 压缩文件夹的类代码
2009/11/05 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
Node.js实战 建立简单的Web服务器
2012/03/08 Javascript
jquery实现效果比较好的table选中行颜色
2014/03/25 Javascript
纯js代码制作的网页时钟特效【附实例】
2016/03/30 Javascript
jQuery文本框得到与失去焦点动态改变样式效果
2016/09/08 Javascript
Vue 过渡(动画)transition组件案例详解
2017/01/22 Javascript
nodejs中art-template模板语法的引入及冲突解决方案
2017/11/07 NodeJs
浅谈MUI框架中加载外部网页或服务器数据的方法
2018/01/31 Javascript
js获取form表单中name属性的值
2019/02/27 Javascript
[46:09]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第三场
2014/05/26 DOTA
Django1.3添加app提示模块不存在的解决方法
2014/08/26 Python
Python中http请求方法库汇总
2016/01/06 Python
Python实现遍历目录的方法【测试可用】
2017/03/22 Python
pycharm 解除默认unittest模式的方法
2018/11/30 Python
Python3实现从排序数组中删除重复项算法分析
2019/04/03 Python
Django项目中实现使用qq第三方登录功能
2019/08/13 Python
Python 使用多属性来进行排序
2019/09/01 Python
pytorch .detach() .detach_() 和 .data用于切断反向传播的实现
2019/12/27 Python
pytorch之inception_v3的实现案例
2020/01/06 Python
Python3 中sorted() 函数的用法
2020/03/24 Python
Python实现将元组中的元素作为参数传入函数的操作
2020/06/05 Python
python实现批量命名照片
2020/06/18 Python
使用matplotlib的pyplot模块绘图的实现示例
2020/07/12 Python
Python常驻任务实现接收外界参数代码解析
2020/07/21 Python
细说CSS3中的选择符
2008/10/17 HTML / CSS
初中地理教学反思
2014/01/11 职场文书
美国探亲签证邀请信
2014/02/05 职场文书
便利店投资创业计划书
2014/02/08 职场文书
彩色的非洲教学反思
2014/02/18 职场文书
法制宣传日活动总结
2014/04/29 职场文书
第二批党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
环境工程专业毕业生求职信
2014/09/30 职场文书
营销与策划实训报告
2014/11/05 职场文书
英文导游词
2015/02/13 职场文书
Python趣味挑战之用pygame实现简单的金币旋转效果
2021/05/31 Python