利用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创建系统目录的方法
Mar 11 Python
Python中输出ASCII大文字、艺术字、字符字小技巧
Apr 28 Python
用pickle存储Python的原生对象方法
Apr 28 Python
Python实现登陆文件验证方法
Oct 06 Python
Python实现常见的回文字符串算法
Nov 14 Python
Python设计模式之原型模式实例详解
Jan 18 Python
python 堆和优先队列的使用详解
Mar 05 Python
使用OpenCV实现仿射变换—旋转功能
Aug 29 Python
详解Pycharm安装及Django安装配置指南
Sep 15 Python
基于OpenCV的路面质量检测的实现
Nov 04 Python
如何利用python 读取配置文件
Jan 06 Python
Python获取江苏疫情实时数据及爬虫分析
Aug 02 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
便携利器 — TECSUN PL-365简评
2021/03/02 无线电
在同一窗体中使用PHP来处理多个提交任务
2006/10/09 PHP
PHP类中Static方法效率测试代码
2010/10/17 PHP
php中将指针移动到数据集初始位置的实现代码[mysql_data_seek]
2012/11/01 PHP
php自动识别文件编码并转换为UTF-8的方法
2014/06/12 PHP
PHP利用header跳转失效的解决方法
2014/10/24 PHP
Laravel 6 将新增为指定队列任务设置中间件的功能
2019/08/06 PHP
Thinkphp集成抖音SDK的实现方法
2020/04/28 PHP
JavaScript 类似flash效果的立体图片浏览器
2010/02/08 Javascript
juqery 学习之三 选择器 可见性 元素属性
2010/11/25 Javascript
jquery中选择块并改变属性值的方法
2013/07/31 Javascript
jquery mobile页面跳转后样式丢失js失效的解决方法
2014/09/06 Javascript
Node.js + Redis Sorted Set实现任务队列
2016/09/19 Javascript
js无提示关闭浏览器窗口的两种方法分析
2016/11/06 Javascript
jQuery实现文件编码成base64并通过AJAX上传的方法
2018/04/12 jQuery
vue2.0 下拉框默认标题设置方法
2018/08/22 Javascript
在vue中使用G2图表的示例代码
2019/03/19 Javascript
使用Phantomjs和Node完成网页的截屏快照的方法
2019/07/16 Javascript
Vue 3.0 前瞻Vue Function API新特性体验
2019/08/12 Javascript
解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题
2020/07/27 Javascript
原生js实现分页效果
2020/09/23 Javascript
Python中的map、reduce和filter浅析
2014/04/26 Python
python网络编程学习笔记(六):Web客户端访问
2014/06/09 Python
python使用magic模块进行文件类型识别方法
2018/12/08 Python
使用 Python 处理3万多条数据只要几秒钟
2020/01/19 Python
Keras自定义实现带masking的meanpooling层方式
2020/06/16 Python
python 数据类型强制转换的总结
2021/01/25 Python
linux面试题参考答案(5)
2016/11/05 面试题
民主评议党员个人自我评价
2015/03/03 职场文书
交通事故起诉书
2015/05/19 职场文书
学雷锋活动简报
2015/07/20 职场文书
网吧员工管理制度
2015/08/05 职场文书
小学二年级班主任工作经验交流材料
2015/11/02 职场文书
基于MySql验证的vsftpd虚拟用户
2021/11/07 MySQL
Python 恐龙跑跑小游戏实现流程
2022/02/15 Python
十大最强岩石系宝可梦,怪颚龙实力最强,第七破坏力很强
2022/03/18 日漫