利用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 相关文章推荐
使用numpy和PIL进行简单的图像处理方法
Jul 02 Python
python学习开发mock接口
Apr 28 Python
python3.7实现云之讯、聚合短信平台的短信发送功能
Sep 26 Python
python实现XML解析的方法解析
Nov 16 Python
python实现智能语音天气预报
Dec 02 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
Jun 02 Python
PyQT5 实现快捷键复制表格数据的方法示例
Jun 19 Python
python实现文件分片上传的接口自动化
Nov 19 Python
Python读取图像并显示灰度图的实现
Dec 01 Python
在python中实现导入一个需要传参的模块
May 12 Python
python实现MD5进行文件去重的示例代码
Jul 09 Python
Python Matplotlib绘制等高线图与渐变色扇形图
Apr 14 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 和 HTML
2006/10/09 PHP
无数据库的详细域名查询程序PHP版(3)
2006/10/09 PHP
PHP获取文件行数的方法
2015/06/10 PHP
PHP实现断点续传乱序合并文件的方法
2018/09/06 PHP
Laravel框架源码解析之模型Model原理与用法解析
2020/05/14 PHP
jquery 弹出登录窗口实现代码
2009/12/24 Javascript
JQuery 选择和过滤方法代码总结
2010/11/19 Javascript
jquery调用asp.net 页面后台的实现代码
2011/04/27 Javascript
使用jquery.upload.js实现异步上传示例代码
2014/07/29 Javascript
js代码验证手机号码和电话号码是否合法
2015/07/30 Javascript
简单谈谈json跨域
2016/03/13 Javascript
Three.js学习之Lamber材质和Phong材质
2016/08/04 Javascript
Vue.js每天必学之内部响应式原理探究
2016/09/07 Javascript
谈谈target=_new和_blank的不同之处
2016/10/25 Javascript
JS实现简单的二元方程计算器功能示例
2017/01/03 Javascript
详解用node-images 打造简易图片服务器
2017/05/08 Javascript
Vue封装一个简单轻量的上传文件组件的示例
2018/03/21 Javascript
element-ui 设置菜单栏展开的方法
2018/08/22 Javascript
vue根据进入的路由进行原路返回的方法
2018/09/26 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
2020/09/24 Javascript
vue3自定义dialog、modal组件的方法
2021/01/04 Vue.js
[02:30]DOTA2放量测试专访海涛:呼吁保护新手玩家
2013/08/26 DOTA
[03:46]DOTA2英雄基础教程 维萨吉
2013/12/11 DOTA
Python实现的爬取百度贴吧图片功能完整示例
2019/05/10 Python
python循环输出三角形图案的例子
2019/11/22 Python
Tensorflow 实现分批量读取数据
2020/01/04 Python
python爬虫请求头的使用
2020/12/01 Python
美体小铺瑞典官方网站:The Body Shop瑞典
2018/01/27 全球购物
攀岩、滑雪、徒步旅行装备:Black Diamond Equipment
2019/08/16 全球购物
关于递归的一道.NET面试题
2013/05/12 面试题
电气工程师岗位职责
2014/01/01 职场文书
大学生评语大全
2014/04/18 职场文书
本科毕业生自荐信
2014/06/02 职场文书
借名购房协议书范本
2014/10/06 职场文书
2016春节家属慰问信
2015/03/25 职场文书
golang 接口嵌套实现复用的操作
2021/04/29 Golang