BBS项目补充知识

1. 开放 media 文件路径

# 以用户注册页面为例
用户头像文件我们默认时保存在 根路径下的static下的img文件夹
但也可以单独放置在指定路径下 # 根路径下创建 media文件夹 # 在配置文件中配置指定要单独存放的路径:
# 配置图片要上传的路径
'''你配置这个路径之后,以后上传文件的时候,就可以分别指定上传的路径'''
MEDIA_ROOT = os.path.join(BASE_DIR, 'media') # media不是固定的,想叫什么叫什么 # 找到注册功能 将获取用户头像数据改为:
# 1.注册功能
img = request.FILES.get('img') # 获取图片文件用FILES 不能用POST

2. 后台展示文章功能实现

# 新创建 app02:
manage.py@BBS > startapp app02 # 在app02下 views.py写后台功能:
from django.shortcuts import render # Create your views here. from app01 import models # 展示文章
def article_list(request): article_list = models.Article.objects.all()
return render(request, 'backend/article_list.html', locals()) # 复制总路由文件到app02中:
# 总路由添加(注意不要放在最下面):
# 路由分发
url(r'^app02/', include('app02.urls')), # app02路由添加:
from django.conf.urls import url from app02 import views urlpatterns = [ # 展示文章
url(r'^article_list/', views.article_list), ] # 新建后台页面文件 article_list.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body> <div class="container-fluid">
<div class="row">
<h1 class="text-center">文章展示</h1>
<div class="col-md-8 col-md-offset-2">
<a href="" class="btn btn-success" style="margin-bottom: 16px;">添加文章</a>
<table class="table-striped table table-hover"> <tbody>
<tr>
<td>标题</td>
<td>分类</td>
<td>点赞数</td>
<td>点踩数</td>
<td>评论数</td>
<td>添加时间</td>
<td>操作</td>
</tr>
</tbody> <tbody>
{% for article in article_list %}
<tr>
<td><a target="_blank" href="/{{ article.blog.userinfo.username }}/{{ article.pk }}">{{ article.title }}</a></td>
<td>{{ article.category }}</td>
<td>{{ article.up_num }}</td>
<td>{{ article.down_num }}</td>
<td>{{ article.comment_num }}</td>
<td>{{ article.create_time|date:'Y-m-d H:i' }}</td> <td>
<a href="" class="btn btn-success">修改</a>
<a href="" class="btn btn-danger">删除</a>
</td>
</tr>
{% endfor %}
</tbody> </table>
</div>
</div>
</div> </body>
</html>

3. 文章展示页的添加文章功能实现

# 百度下载 kindeditor文章编辑器
http://kindeditor.net/down.php
参考文档使用 # 在app02下 views.py 添加后台功能:
def add_article(request):
return render(request, 'backend/add_article.html') # app02路由添加:
# 添加文章
url(r'^add/article/', views.add_article), # 在 article_list.html文件中 找到添加文章功能 a标签 并修改:
<a href="/app02/add/article/" target="_blank" class="btn btn-success" style="margin-bottom: 16px;">添加文章</a> # 新建后台页面文件 add_article.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body> <div class="container-fluid">
<div class="row">
<h1 class="text-center">添加文章</h1>
<div class="col-md-8 col-md-offset-2"> <form action=""> <div class="form-group">
<label for="title">文章标题</label>
<input type="text" id="title" name="title" class="form-control">
</div> <div class="form-group">
<label for="title">文章内容</label>
<textarea id="editor_id" name="content" style="width:500px;height:600px;"></textarea> </div> <div class="form-group">
<label for="title">文章分类</label>
<select name="" id="">
<option value="">分类1</option>
<option value="">分类2</option>
<option value="">分类3</option>
</select>
</div> <div class="form-group">
<label for="title">文章标签</label>
<input type="checkbox" name="tags">标签1
<input type="checkbox" name="tags">标签2
<input type="checkbox" name="tags">标签3
</div> <input type="submit" class="btn btn-success" value="提交"> <script charset="utf-8" src="/static/kindeditor/kindeditor-all-min.js"></script>
<script charset="utf-8" src="/static/kindeditor/lang/zh-CN.js"></script>
<link rel="stylesheet" href="/static/kindeditor/themes/simple/simple.css" /> <script>
KindEditor.ready(function (K) {
window.editor = K.create('#editor_id', {
width: '100%',
height: '300px',
items: [
'source', '|', 'undo', 'redo', '|', 'preview', 'print', 'template', 'code', 'cut', 'copy', 'paste',
'plainpaste', 'wordpaste', '|', 'justifyleft', 'justifyright',
'justifyfull', 'insertorderedlist', 'insertunorderedlist', 'indent', 'outdent', 'subscript',
'superscript', 'clearhtml', 'quickformat', 'selectall', '|', 'fullscreen', '/',
'formatblock', 'fontname', 'fontsize', '|', 'forecolor', 'hilitecolor', 'bold',
'italic', 'underline', 'strikethrough', 'lineheight', 'removeformat', '|', 'image', 'multiimage',
'flash', 'media', 'insertfile', 'table', 'hr', 'emoticons', 'baidumap', 'pagebreak',
'anchor', 'link', 'unlink', '|', 'about'
],
resizeType:0,
themeType : 'simple'
});
});
</script> </body>
</html>

BBS项目补充知识(后台文章展示功能)的更多相关文章

  1. BBS项目分布搭建五(评论相关功能实现)

    BBS项目分布搭建五(评论相关) 1. 根评论逻辑实现 # 在models.py文件中 修改: # 7. 评论表 parent = models.ForeignKey(to='self', null= ...

  2. bbs项目实现点赞和评论的功能

    一.点赞功能 思路是这样的: 1.对点赞和踩都设置一个相同的class,然后对这个class绑定点击事件 2.点击触发ajax请求,我们对赞的标签设置了一个class属性,对踩的标签没有设置这个cla ...

  3. Django 项目补充知识(JSONP,前端瀑布流布局,组合搜索,多级评论)

    一.JSONP 1浏览器同源策略 通过Ajax,如果在当前域名去访问其他域名时,浏览器会出现同源策略,从而阻止请求的返回 由于浏览器存在同源策略机制,同源策略阻止从一个源加载的文档或脚本获取或设置另一 ...

  4. BBS项目分布搭建二(个人站点相关)

    BBS项目分布搭建二 1. 首页详情补充 # 在home.html文件中 body标签内补充: <div class="container-fluid"> <di ...

  5. 织梦dedecms后台文章搜索关键字,关键字包含文章内容的代码修改

    1.织梦dedecms后台文章搜索功能在哪里找?织梦dedecms后台-->核心-->常用操作-->所有档案列表(或)织梦dedecms后台-->核心-->内容管理--& ...

  6. BBS项目分布搭建三(个人站点时间归档补充,实现侧边栏跳转、无线级分类、实现文章详情页展示功能)

    BBS项目分布搭建三(个人站点时间归档补充,) 1. 个人站点时间归档 """ settings.py设置最好更改以下: LANGUAGE_CODE = 'zh-hans ...

  7. 031医疗项目-模块三:药品供应商目录模块——供货商药品目录查询功能----------sql补充知识

    这个补充知识有一个点很有必要,视屏上的老师提出一点: 内链接关联查询: 如果表A和表B有一个外键关联 ,可以通过外键进行内链接查询 select dictinfo.*, dicttype.typena ...

  8. day75 bbs项目☞后台管理+修改头像

    目录 一.后台管理之添加文章 二.修改用户头像 bbs项目总结 一.后台管理之添加文章 添加文章有两个需要注意的问题: 文章的简介切取,应该想办法获取到当前文章的文本内容后再截取字符 XSS攻击,由于 ...

  9. 一步一步手写GIS开源项目-(1)500行代码实现基础GIS展示功能

    1.开篇 大学毕业工作已经两年了,上学那会就很想研读一份开源GIS的源码,苦于自己知识和理解有限,而市面上也没有什么由浅入深讲解开源gis原理的书籍,大多都是开源项目简介以及项目的简单应用.对于初级程 ...

随机推荐

  1. VLAN大战三层交换机 以及无敌的Hybrid

    VLAN与三层交换机 1.VLAN的概念与优势 2.VLAN的种类 3.静态VLAN的配置 4.Trunk介绍and配置 5.三层交换机原理 6.hybrid 1.当某个网络设备出现 故障后,就会不停 ...

  2. Spark RDD学习

    RDD(弹性分布式数据集)是Spark的核心抽象.它是一组元素,在集群的节点之间进行分区,以便我们可以对其执行各种并行操作. 创建RDD的两种方式: 并行化驱动程序中的现有数据: 引用外部存储系统中的 ...

  3. drop、truncate、delete的区别

    (1)DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作. TRUNCATE TABLE 则一次性地从表中删除所有的数据并不把单独 ...

  4. ClassPath资源的读取

    读取ClassPath的资源 在程序中经常有很多资源需要读取,常见的就是配置文件,Java中将文件当作一种资源来处理,可以使用Class或者ClassLoader来处理 一,使用Class类的getS ...

  5. 正则表达式以及re模块的使用

    内容概要 正则表达式简介 字符组 特殊符号 量词 贪婪匹配与非贪婪匹配 取消转义 正则表达式简介 '''正则表达式是一门语言,如果想在python中使用,需要导入re模块''' # 什么是正则表达式? ...

  6. Solution -「HNOI 2007」「洛谷 P3185」分裂游戏

    \(\mathcal{Description}\)   Link.   给定 \(n\) 堆石子,数量为 \(\{a_n\}\),双人博弈,每轮操作选定 \(i<j\le k\),使 \(a_i ...

  7. Realtime Data Processing at Facebook

    概要 这篇论文发表于2016年,主要是介绍Facebook内部的流式计算平台的设计与思考,对于流式计算的关键特性的实现选型上进行深度对比分析. 流式计算系统5个衡量指标 文中提到有5个重要的考量部分 ...

  8. .NET core实现一个简易的事件协调器(saga)

    在领域驱动设计中,由于领域边界的存在,以往的分层设计中业务会按照其固有的领域知识被切分到不同的限界中,并且引入了领域事件这一概念来降低单个业务的复杂度,通过非耦合的事件驱动来完成复杂的业务.但是事件驱 ...

  9. Centos下Ambari2.7.5的编译和安装

    前言 终于,要开始写点大数据相关的文章了.当真的要开始写老本行的时候,还是考虑了挺久的.一是不知道从何处写起,二是如何能写点有意思的. 我们常说,过程比结果重要.也是有很多人喜欢准备完全之后,才会开始 ...

  10. MYSQL 获取最近多少天时间列表

    1.首先获取一个最近1000天的时间列表,如果不够可以按规则再加 SELECT adddate(CURDATE(),-(t2.i * 100 + t1.i * 10 + t0.i)) date FRO ...