利用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统计文件行数示例分享
Feb 21 Python
Python函数的周期性执行实现方法
Aug 13 Python
python利用paramiko连接远程服务器执行命令的方法
Oct 16 Python
Python基于列表list实现的CRUD操作功能示例
Jan 05 Python
Redis使用watch完成秒杀抢购功能的代码
May 07 Python
Python实现多态、协议和鸭子类型的代码详解
May 05 Python
Python自动化运维之Ansible定义主机与组规则操作详解
Jun 13 Python
Python字符串的修改方法实例
Dec 19 Python
python文件绝对路径写法介绍(windows)
Dec 25 Python
Django的ListView超详细用法(含分页paginate)
May 21 Python
Python脚本实现Zabbix多行日志监控过程解析
Aug 26 Python
Jmeter调用Python脚本实现参数互相传递的实现
Jan 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生成图形(Libchart)实例
2013/11/06 PHP
Destoon模板制作简明教程
2014/06/20 PHP
CodeIgniter框架URL路由总结
2014/09/03 PHP
php静态文件生成类实例分析
2015/01/03 PHP
JavaScript实现滚动栏效果的方法
2015/04/27 PHP
PHP中类属性与类静态变量的访问方法示例
2016/07/13 PHP
JavaScript初学者需要了解10个小技巧
2010/08/25 Javascript
浅析JavaScript中的常用算法与函数
2013/11/21 Javascript
js动态控制table的tr、td增加及删除的具体实现
2014/04/30 Javascript
select多选 multiple的使用示例
2014/06/16 Javascript
JS定义网页表单提交(submit)的方法
2015/03/20 Javascript
js采用concat和sort将N个数组拼接起来的方法
2016/01/21 Javascript
bootstrap fileinput完整实例分享
2016/11/08 Javascript
js实现一个简单的MVVM框架示例
2018/01/15 Javascript
vue项目中api接口管理总结
2018/04/20 Javascript
JS文件中加载jquery.js的实例代码
2018/05/05 jQuery
微信小程序实现的3d轮播图效果示例【基于swiper组件】
2018/12/11 Javascript
如何提升vue.js中大型数据的性能
2019/06/21 Javascript
Vue-Cli项目优化操作的实现
2019/10/27 Javascript
[00:12]DAC2018 天才少年转战三号位,他的SOLO是否仍如昔日般强大?
2018/04/06 DOTA
python代码如何注释
2020/06/01 Python
戴尔加拿大官网:Dell加拿大
2016/09/17 全球购物
eDreams意大利:南欧领先的在线旅行社
2018/11/23 全球购物
LN-CC美国:伦敦时尚生活的缩影
2019/02/19 全球购物
Linux如何为某个操作添加别名
2013/03/01 面试题
移动通信专业自荐信范文
2013/11/12 职场文书
培训协议书范本
2014/04/22 职场文书
我的梦想演讲稿
2014/04/30 职场文书
升学宴演讲稿
2014/09/01 职场文书
党的群众路线教育实践活动对照检查剖析材料
2014/10/09 职场文书
高校自主招生自荐信2015
2015/03/04 职场文书
求职推荐信范文
2015/03/27 职场文书
结婚典礼致辞
2015/07/28 职场文书
python通配符之glob模块的使用详解
2021/04/24 Python
Mysql Online DDL的使用详解
2021/05/20 MySQL
详解Java实践之适配器模式
2021/06/18 Java/Android