利用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 21 Python
python创建进程fork用法
Jun 04 Python
Python实现的使用telnet登陆聊天室实例
Jun 17 Python
python解决方案:WindowsError: [Error 2]
Aug 28 Python
python使用jieba实现中文分词去停用词方法示例
Mar 11 Python
Python反转序列的方法实例分析
Mar 21 Python
python实现爬取百度图片的方法示例
Jul 06 Python
python中的itertools的使用详解
Jan 13 Python
Cpython解释器中的GIL全局解释器锁
Nov 09 Python
Python实现对word文档添加密码去除密码的示例代码
Dec 29 Python
Python list去重且保持原顺序不变的方法
Apr 03 Python
C3 线性化算法与 MRO之Python中的多继承
Oct 05 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读取IMAP邮件
2006/10/09 PHP
我的论坛源代码(九)
2006/10/09 PHP
PHP的Socket网络编程入门指引
2015/08/11 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
2015/11/04 PHP
linux下为php添加iconv模块的方法
2016/02/28 PHP
php中Redis的应用--消息传递
2017/03/28 PHP
php使用QueryList轻松采集js动态渲染页面方法
2018/09/11 PHP
在Javascript中为String对象添加trim,ltrim,rtrim方法
2006/09/22 Javascript
酷炫jQuery全屏3D焦点图动画效果
2016/03/22 Javascript
JS简单实现无缝滚动效果实例
2016/08/24 Javascript
jQuery 常见小例汇总
2016/12/14 Javascript
NodeJs安装npm包一直失败的解决方法
2017/04/28 NodeJs
详解Vue中localstorage和sessionstorage的使用
2017/12/22 Javascript
JavaScript实现数值自动增加动画
2017/12/28 Javascript
vue ssr 指南详读
2018/06/29 Javascript
AngularJs的UI组件ui-Bootstrap之Tooltip和Popover
2018/07/13 Javascript
vue数据操作之点击事件实现num加减功能示例
2019/01/19 Javascript
javascript二维数组和对象的深拷贝与浅拷贝实例分析
2019/10/26 Javascript
24行JavaScript代码实现Redux的方法实例
2019/11/17 Javascript
python生成随机图形验证码详解
2017/11/08 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
2019/12/11 Python
python实现简单学生信息管理系统
2020/04/09 Python
Django如何在不停机的情况下创建索引
2020/08/02 Python
css3实现波纹特效、H5实现动态波浪效果
2018/01/31 HTML / CSS
彼得罗夫美国官网:Peter Thomas Roth美国(青瓜面膜)
2017/11/05 全球购物
卡西欧G-SHOCK英国官网: 防水防震手表
2018/01/08 全球购物
达拉斯牛仔官方商店:Dallas Cowboys Pro Shop
2018/02/10 全球购物
应届毕业生自我鉴定范文
2013/12/27 职场文书
大学毕业生个人自荐书
2014/07/02 职场文书
小学课外活动总结
2014/07/09 职场文书
工作证明英文模板
2014/10/21 职场文书
承兑汇票转让证明怎么写?
2014/11/30 职场文书
求职导师推荐信范文
2015/03/27 职场文书
2015年高三教学工作总结
2015/07/21 职场文书
六年级情感作文之500字
2019/10/23 职场文书
详解Python如何批量采集京东商品数据流程
2022/01/22 Python