利用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中的__new__与__init__魔术方法理解笔记
Nov 08 Python
简单易懂的python环境安装教程
Jul 13 Python
Python实现输出程序执行进度百分比的方法
Sep 16 Python
Python基础教程之内置函数locals()和globals()用法分析
Mar 16 Python
Python使用Phantomjs截屏网页的方法
May 17 Python
Python实现的简单计算器功能详解
Aug 25 Python
virtualenv 指定 python 解释器的版本方法
Oct 25 Python
在Python中分别打印列表中的每一个元素方法
Nov 07 Python
SpringBoot实现登录注册常见问题解决方案
Mar 04 Python
PyQt5 文本输入框自动补全QLineEdit的实现示例
May 13 Python
在keras里面实现计算f1-score的代码
Jun 15 Python
python时间序列数据转为timestamp格式的方法
Aug 03 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中XMLHttpRequest(Ajax)不能设置自定义的Referer的解决方法
2011/11/26 PHP
对PHP PDO的一些认识小结
2015/01/23 PHP
linux下php上传文件注意事项
2016/06/11 PHP
Yii视图CGridView列表用法实例分析
2016/07/12 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
js下弹出窗口的变通
2007/04/18 Javascript
JavaScript实现页面滚动图片加载(仿lazyload效果)
2011/07/22 Javascript
JavaScript/jQuery 表单美化插件小结
2012/02/14 Javascript
使用变量动态设置js的属性名
2014/10/19 Javascript
zepto.js中tap事件阻止冒泡的实现方法
2015/02/12 Javascript
探讨:JavaScript ECAMScript5 新特性之get/set访问器
2016/05/05 Javascript
Vue.js 2.0窥探之Virtual DOM到底是什么?
2017/02/10 Javascript
JavaScript中的工厂函数(推荐)
2017/03/08 Javascript
利用Node.js了解与测量HTTP所花费的时间详解
2017/09/22 Javascript
Js中使用正则表达式验证输入是否有特殊字符
2018/09/07 Javascript
微信小程序实现登录遮罩效果
2018/11/01 Javascript
vue实现简单的星级评分组件源码
2018/11/16 Javascript
35个最好用的Vue开源库(史上最全)
2019/01/03 Javascript
vue axios封装httpjs,接口公用配置拦截操作
2020/08/11 Javascript
JS实现炫酷雪花飘落效果
2020/08/19 Javascript
解决element-ui的下拉框有值却无法选中的情况
2020/11/07 Javascript
Python中类的继承代码实例
2014/10/28 Python
详解Python中dict与set的使用
2015/08/10 Python
简单了解Python下用于监视文件系统的pyinotify包
2015/11/13 Python
Python语言快速上手学习方法
2018/12/14 Python
python3实现网络爬虫之BeautifulSoup使用详解
2018/12/19 Python
python pymysql链接数据库查询结果转为Dataframe实例
2020/06/05 Python
Python如何实现感知器的逻辑电路
2020/12/25 Python
基于PyTorch中view的用法说明
2021/03/03 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
.net笔试题
2014/03/03 面试题
室内设计专业个人的自我评价
2013/10/19 职场文书
医学院护理专业应届生求职信
2013/11/12 职场文书
购房意向书
2014/08/30 职场文书
教师批评与自我批评心得体会
2014/10/16 职场文书
Canvas跟随鼠标炫彩小球的实现
2021/04/11 Javascript