利用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编写生成树状结构的文件目录的脚本的教程
May 04 Python
Python制作钉钉加密/解密工具
Dec 07 Python
利用python编写一个图片主色转换的脚本
Dec 07 Python
Python解析Excle文件中的数据方法
Oct 23 Python
对python插入数据库和生成插入sql的示例讲解
Nov 14 Python
Python使用pandas对数据进行差分运算的方法
Dec 22 Python
python批量获取html内body内容的实例
Jan 02 Python
详解解决Python memory error的问题(四种解决方案)
Aug 08 Python
python3中的eval和exec的区别与联系
Oct 10 Python
Python argparse模块使用方法解析
Feb 20 Python
keras多显卡训练方式
Jun 10 Python
VSCODE配置Markdown及Markdown基础语法详解
Jan 19 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 feof用来识别文件末尾字符的方法
2010/08/01 PHP
php图片的裁剪与缩放生成符合需求的缩略图
2013/01/11 PHP
PHP实用函数分享之去除多余的0
2015/02/06 PHP
php根据指定位置和长度获得子字符串的方法
2015/03/17 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
自动检查并替换文本框内的字符
2006/06/30 Javascript
jQuery Validation Plugin验证插件手动验证
2016/01/26 Javascript
js querySelector() 使用方法
2016/12/21 Javascript
Vue实现双向绑定的方法
2016/12/22 Javascript
jQuery验证表单格式的使用方法
2017/01/10 Javascript
React快速入门教程
2017/01/17 Javascript
使用cookie绕过验证码登录的实现代码
2017/10/12 Javascript
Angular使用操作事件指令ng-click传多个参数示例
2018/03/27 Javascript
js中位运算的运用实例分析
2018/12/11 Javascript
有趣的JavaScript隐式类型转换操作实例分析
2020/05/02 Javascript
webpack安装配置与常见使用过程详解(结合vue)
2020/06/01 Javascript
基于Vue.js+Nuxt开发自定义弹出层组件
2020/10/09 Javascript
nuxt 自定义 auth 中间件实现令牌的持久化操作
2020/11/05 Javascript
[07:59]2014DOTA2叨叨刀塔 林熊猫称被邀请赛现场盛况震撼
2014/07/21 DOTA
python 算法 排序实现快速排序
2012/06/05 Python
Django中对数据查询结果进行排序的方法
2015/07/17 Python
Ruby元编程基础学习笔记整理
2016/07/02 Python
Python实现 PS 图像调整中的亮度调整
2019/06/28 Python
使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例
2020/05/15 Python
Python3爬虫里关于识别微博宫格验证码的知识点详解
2020/07/30 Python
python生成word合同的实例方法
2021/01/12 Python
Sandro Paris美国官网:典雅别致的法国时尚服饰品牌
2017/12/26 全球购物
施华洛世奇美国官网:SWAROVSKI美国
2018/02/08 全球购物
美国宠物美容和宠物用品购物网站:Cherrybrook
2018/12/07 全球购物
Doyoueven官网:澳大利亚健身服饰和配饰品牌
2019/03/24 全球购物
理工科学生的自我评价
2013/12/15 职场文书
小学六年级学生评语
2014/04/22 职场文书
优秀德育工作者事迹材料
2014/05/07 职场文书
优秀电子工程系毕业生求职信
2014/05/24 职场文书
2014年领班工作总结
2014/11/25 职场文书
2016入党积极分子心得体会
2016/01/06 职场文书