利用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中动态检测编码chardet的使用教程
Jul 06 Python
对python抓取需要登录网站数据的方法详解
May 21 Python
Linux下python3.6.1环境配置教程
Sep 26 Python
Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】
Jan 05 Python
python xpath获取页面注释的方法
Jan 14 Python
Python中最大递归深度值的探讨
Mar 05 Python
python执行scp命令拷贝文件及文件夹到远程主机的目录方法
Jul 08 Python
python pandas获取csv指定行 列的操作方法
Jul 12 Python
用Python从0开始实现一个中文拼音输入法的思路详解
Jul 20 Python
django为Form生成的label标签添加class方式
May 20 Python
win10下python3.8的PIL库安装过程
Jun 08 Python
python入门学习关于for else的特殊特性讲解
Nov 20 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中文验证码实现示例分享
2014/01/12 PHP
ThinkPHP缓存方法S()概述
2014/06/13 PHP
php+mysql实现简单的增删改查功能
2015/07/13 PHP
phpstudy默认不支持64位php的解决方法
2017/02/20 PHP
jQuery 位置插件
2008/12/25 Javascript
URL地址中的#符号使用说明
2011/02/12 Javascript
关于js数组去重的问题小结
2014/01/24 Javascript
jQuery中的val()示例应用
2014/02/26 Javascript
jQuery回调函数的定义及用法实例
2014/12/23 Javascript
JS实现让访问者自助选择网页文字颜色的方法
2015/02/24 Javascript
JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)
2015/12/13 Javascript
JavaScript实现ASC转汉字及汉字转ASC的方法
2016/01/23 Javascript
JavaScript DOM节点操作方法总结
2016/08/23 Javascript
如何在vue里添加好看的lottie动画
2018/08/02 Javascript
vue打包相关细节整理(小结)
2018/09/28 Javascript
python根据文件大小打log日志
2014/10/09 Python
Python实现拷贝多个文件到同一目录的方法
2016/09/19 Python
Python实现冒泡排序的简单应用示例
2017/12/11 Python
python pandas dataframe 按列或者按行合并的方法
2018/04/12 Python
Window 64位下python3.6.2环境搭建图文教程
2018/09/19 Python
Python实现的各种常见分布算法示例
2018/12/13 Python
Python中的枚举类型示例介绍
2019/01/09 Python
Flask框架钩子函数功能与用法分析
2019/08/02 Python
Python中IP地址处理IPy模块的方法
2019/08/16 Python
python request 模块详细介绍
2020/11/10 Python
印尼在线精品店:Berrybenka.com
2016/10/22 全球购物
美国最值得信赖的宠物药房:Allivet
2019/03/23 全球购物
Oracle性能调优原则
2012/05/03 面试题
农行实习自我鉴定
2013/09/22 职场文书
环境工程专业个人求职信
2013/12/05 职场文书
合作意向书格式及范文
2014/03/31 职场文书
党员三严三实心得体会
2014/10/13 职场文书
教师党员整改措施
2014/10/24 职场文书
《走遍天下书为侣》教学反思
2016/02/22 职场文书
大学生自我鉴定怎么写
2019/05/07 职场文书
详解redis分布式锁的这些坑
2021/05/19 Redis