利用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 10 Python
使用Python解析JSON数据的基本方法
Oct 15 Python
python3.6+django2.0开发一套学员管理系统
Mar 03 Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
Feb 28 Python
找Python安装目录,设置环境路径以及在命令行运行python脚本实例
Mar 09 Python
Windows10+anacond+GPU+pytorch安装详细过程
Mar 24 Python
jupyter 导入csv文件方式
Apr 21 Python
基于pycharm实现批量修改变量名
Jun 02 Python
Python类的继承super相关原理解析
Oct 22 Python
python中requests模拟登录的三种方式(携带cookie/session进行请求网站)
Nov 17 Python
Python中的面向接口编程示例详解
Jan 17 Python
Pyside2中嵌入Matplotlib的绘图的实现
Feb 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 之入门篇
2006/12/04 PHP
php生成excel列名超过26列大于Z时的解决方法
2014/12/29 PHP
PHP生成随机密码方法汇总
2015/08/27 PHP
php实现登录页面的简单实例
2019/09/29 PHP
Javascript下判断是否为闰年的Datetime包
2010/10/26 Javascript
分享精心挑选的23款美轮美奂的jQuery 图片特效插件
2012/08/14 Javascript
你必须知道的JavaScript 变量命名规则详解
2013/05/07 Javascript
jquery内置验证(validate)使用方法示例(表单验证)
2013/12/04 Javascript
JavaScript中按位“异或”运算符使用介绍
2014/03/14 Javascript
JavaScript中消除闭包的一般方法介绍
2015/03/16 Javascript
Node.js的项目构建工具Grunt的安装与配置教程
2016/05/12 Javascript
jquery.qtip提示信息插件用法简单实例
2016/06/17 Javascript
Require.JS中的几种define定义方式示例
2017/06/01 Javascript
jQuery获取复选框选中的当前行的某个字段的值
2017/09/15 jQuery
微信小程序实现的3d轮播图效果示例【基于swiper组件】
2018/12/11 Javascript
vue响应式更新机制及不使用框架实现简单的数据双向绑定问题
2019/06/27 Javascript
vue项目中使用AES实现密码加密解密(ECB和CBC两种模式)
2019/08/12 Javascript
[03:14]2014DOTA2西雅图国际邀请赛 EG战队巡礼
2014/07/07 DOTA
python基础教程之python消息摘要算法使用示例
2014/02/10 Python
python中对list去重的多种方法
2014/09/18 Python
Python实现动态加载模块、类、函数的方法分析
2017/07/18 Python
对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解
2018/06/28 Python
Django 限制用户访问频率的中间件的实现
2018/08/23 Python
numpy 计算两个数组重复程度的方法
2018/11/07 Python
Python-copy()与deepcopy()区别详解
2019/07/12 Python
Django如何实现防止XSS攻击
2020/10/13 Python
CSS3弹性盒模型flex box快速入门心得(必看篇)
2016/05/24 HTML / CSS
Html5原创俄罗斯方块(基于canvas)
2019/01/07 HTML / CSS
澳大利亚药房在线:ThePharmacy
2017/10/04 全球购物
澳大利亚最好的在线时尚精品店:Princess Polly
2018/01/03 全球购物
局火灾防控工作方案
2014/05/25 职场文书
党的群众路线教育实践活动个人整改方案
2014/09/21 职场文书
乡镇党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
Python Django模型详解
2021/10/05 Python
用Python可视化新冠疫情数据
2022/01/18 Python
python井字棋游戏实现人机对战
2022/04/28 Python