10-----BBS论坛
BBS论坛(十)
10.1.客户端权限验证功能完成
(1)cms/cms_profile
显示当前用户的角色和权限
<tr>
<td>角色:</td>
<td>
{% for role in user.roles %}
{{ role.name }}
{% if not loop.last %},{% endif %}
{% endfor %}
</td>
</tr>
<tr>
<td>权限:</td>
<td>
{% for role in user.roles %}
{{ role.desc }}
{% if not loop.last %}/{% endif %}
{% endfor %}
</td>
</tr>
(2)cms/hooks.py
@bp.context_processor
def cms_context_pocessor():
return {'CMSPermission':CMSPermission}
(3)cms/cms_base.html
不同的角色,显示不同的内容
{% set cms_user = g.cms_user %}
{% if cms_user.has_permission(CMSPermission.POSTER) %}
<li class="nav-group post-manage"><a href="#">帖子管理</a></li>
{% endif %} {% if cms_user.has_permission(CMSPermission.COMMENTER) %}
<li class="comments-manage"><a href="#">评论管理</a></li>
{% endif %} {% if cms_user.has_permission(CMSPermission.BOARDER) %}
<li class="board-manage"><a href="#">板块管理</a></li>
{% endif %} {% if cms_user.has_permission(CMSPermission.FRONTUSER) %}
<li class="nav-group user-manage"><a href="#">前台用户管理</a></li>
{% endif %} {% if cms_user.has_permission(CMSPermission.CMSUSER) %}
<li class="nav-group cmsuser-manage"><a href="#">CMS用户管理</a></li>
{% endif %} {% if cms_user.is_developer %}
<li class="cmsrole-manage"><a href="#">CMS组管理</a></li>
{% endif %}
(4)添加用户和角色
#添加访问者
python manage.py create_cms_user -u 我是访问者 -p 123456 -e 11111@qq.com python manage.py add_user_to_role -e 11111@qq.com -n 访问者 #添加运营者
python manage.py create_cms_user -u 我是运营者 -p 123456 -e 22222@qq.com python manage.py add_user_to_role -e 22222@qq.com -n 运营 #添加管理员
python manage.py create_cms_user -u 我是管理员 -p 123456 -e 33333@qq.com python manage.py add_user_to_role -e 33333@qq.com -n 管理员
不同的用户登录到后台cms显示不同的内容
开发者
访问者
10.2.服务端权限验证功能完成
(1)后台剩余的html页面
cms_posts.html
{% extends 'cms/cms_base.html' %} {% block title %}
帖子管理
{% endblock %} {% block head %} {% endblock %} {% block page_title %}
{{ self.title() }}
{% endblock %} {% block main_content %}
帖子管理页面
{% endblock %}
其它几个一样
cms_comments.html
cms_boards.html
cms_fusers.html
cms_cusers.html
cms_croles.html
(2)cms/decorators.py
添加一个权限验证的装饰器
def permission_required(permission):
def outter(func):
@wraps(func)
def inner(*args,**kwargs):
user = g.cms_user
if user.has_permission(permission):
return func(*args,**kwargs)
else:
return redirect(url_for('cms.index'))
return inner
return outter
(3)cms/views.py
@bp.route('/posts/')
@login_required
@permission_required(CMSPermission.POSTER)
def posts():
return render_template('cms/cms_posts.html') @bp.route('/comments/')
@login_required
@permission_required(CMSPermission.COMMENTER)
def comments():
return render_template('cms/cms_comments.html') @bp.route('/boards/')
@login_required
@permission_required(CMSPermission.BOARDER)
def boards():
return render_template('cms/cms_boards.html') @bp.route('/fusers/')
@login_required
@permission_required(CMSPermission.FRONTUSER)
def fusers():
return render_template('cms/cms_fusers.html') @bp.route('/cusers/')
@login_required
@permission_required(CMSPermission.CMSUSER)
def cusers():
return render_template('cms/cms_cusers.html') @bp.route('/croles/')
@login_required
@permission_required(CMSPermission.ALL_PERMISSION)
def croles():
return render_template('cms/cms_croles.html')
(4)cms/cms_base.html
修改url链接
{% set cms_user = g.cms_user %}
{% if cms_user.has_permission(CMSPermission.POSTER) %}
<li class="nav-group post-manage"><a href="{{ url_for('cms.posts') }}">帖子管理</a></li>
{% endif %} {% if cms_user.has_permission(CMSPermission.COMMENTER) %}
<li class="comments-manage"><a href="{{ url_for('cms.comments') }}">评论管理</a></li>
{% endif %} {% if cms_user.has_permission(CMSPermission.BOARDER) %}
<li class="board-manage"><a href="{{ url_for('cms.boards') }}">板块管理</a></li>
{% endif %} {% if cms_user.has_permission(CMSPermission.FRONTUSER) %}
<li class="nav-group user-manage"><a href="{{ url_for('cms.fusers') }}">前台用户管理</a></li>
{% endif %} {% if cms_user.has_permission(CMSPermission.CMSUSER) %}
<li class="nav-group cmsuser-manage"><a href="{{ url_for('cms.cusers') }}">CMS用户管理</a></li>
{% endif %} {% if cms_user.is_developer %}
<li class="cmsrole-manage"><a href="{{ url_for('cms.croles') }}">CMS组管理</a></li>
{% endif %}
end。。。
- 10.1.客户端权限验证功能完成
- 10.2.服务端权限验证功能完成
10-----BBS论坛的更多相关文章
- Python之路【第十八篇】Django小项目简单BBS论坛部分内容知识点
开发一个简单的BBS论坛 项目需求: 整体参考“抽屉新热榜” + “虎嗅网” 实现不同论坛版块 帖子列表展示 帖子评论数.点赞数展示 在线用户展示 允许登录用户发贴.评论.点赞 允许上传文件 帖子可被 ...
- Python之路,Day17 - 分分钟做个BBS论坛
Python之路,Day17 - 分分钟做个BBS论坛 本节内容: 项目:开发一个简单的BBS论坛 需求: 整体参考"抽屉新热榜" + "虎嗅网" 实现不同 ...
- python第一百三十天 ---简单的BBS论坛
简单的BBS论坛 实现功能 git仓库地址:https://github.com/uge3/BBS 1.整体参考“抽屉新热榜” + “博客园” 2.实现不同论坛版块 3.帖子列表展示 4.个人博客主页 ...
- Django小项目简单BBS论坛
开发一个简单的BBS论坛 项目需求: 1 整体参考"抽屉新热榜" + "虎嗅网" 2 实现不同论坛版块 3 帖子列表展示 4 帖子评论数.点赞数展示 5 在线用 ...
- python 学习笔记二十 django项目bbs论坛
项目:开发一个简单的BBS论坛 需求: 整体参考“抽屉新热榜” + “虎嗅网” 实现不同论坛版块 帖子列表展示 帖子评论数.点赞数展示 在线用户展示 允许登录用户发贴.评论.点赞 允许上传文件 帖子可 ...
- Python开发一个简单的BBS论坛
项目:开发一个简单的BBS论坛 需求: 整体参考“抽屉新热榜” + “虎嗅网” 实现不同论坛版块 帖子列表展示 帖子评论数.点赞数展示 在线用户展示 允许登录用户发贴.评论.点赞 允许上传文件 帖子可 ...
- bbs论坛浏览器兼容性问题
一直都是在chrome上进行调试,今天终于把bbs论坛这个项目搭建完了,进入IE.Firefox看了看 吓哭了!!! 火狐 Edge chrome 特别是加了<!DOCTYPE html> ...
- 开源BBS论坛软件推荐
七款开源BBS论坛软件推荐(1) 本文介绍了七个开源的BBS论坛软件(在英文界一般叫做Forum).可能国内的朋友们比较熟悉Discuz!和PHPwind,但其实我们的选择还是很多的,而且下面介绍的这 ...
- LNMP环境搭建BBS论坛及伪静态
我们在mysql备份 LNMP环境中的数据库迁移为独立的服务器的基础上搭建BBS论坛: [root@bqh-117 ~]# mysql -uroot -p123456 Welcome to the ...
- Django项目 BBS论坛
BBS论坛 一.项目表分析 二.自定义form组件 三.注册功能 四.BBS论坛 登录功能
随机推荐
- Selenium二次封装-Java版本
package com.yanfuchang.selenium.utils; import java.awt.AWTException; import java.awt.Robot; import j ...
- opencv新版本的数据结构
转自 http://blog.csdn.net/yang_xian521/article/details/7108387 记得我在OpenCV学习笔记(四)——新版本的数据结构core里面讲过新版本的 ...
- GNU Gettext
一.简介 当前,无论是商业还是免费软件都是英文的,并用英文做为文档.直到现在,为使其它非英语语言用户也能够进行交互所做的工作仍然不足,所以这对非英语语言的国家很不利.然而,随着GNU gettext工 ...
- 3.4PCL中异常处理机制
1.开发者如何增加一个新的异常类 2.如何使用自定义的异常 3.异常的处理
- WebGoat系列实验Cross-Site Scripting (XSS)
WebGoat系列实验Cross-Site Scripting (XSS) PhishingTitle 本次实验是在一个已知存在XSS漏洞的页面进行钓鱼攻击.通过使用XSS与HTML注入,在页面中注入 ...
- Git相关安装包打包下载
Git相关软件偶尔需要***才能下载,故分享于此 1.Git-2.15.0-64-bit.exe 2.TortoiseGit-2.5.0.0-64bit.msi 3.TortoiseGit-Langu ...
- 点石成金:访客至上的网页设计秘笈(原书第2版) 中文PDF版
可用性设计是Web设计中最重要也是难度最大的一项任务.本书作者根据多年从业的经验,剖析用户的心理,在用户使用的模式.为扫描进行设计.导航设计.主页布局.可用性测试等方面提出了许多独特的观点,并给出了大 ...
- 整理的C#屏幕截图,控件截图程序
代码基本从网上搜集而来,整理成以下文件: 包括屏幕截图(和屏幕上看到的一致): 以及控件截图(只要该控件在本窗口内显示完全且不被其他控件遮挡就可正确截图) using System; using Sy ...
- 未能加载文件或程序集“Interop.SQLDMO”或它的某一个依赖项
程序运行没问题,当您配置好IIS后,打开安装向导时出现以下错误信息: 解决办法为:在IIS应用程序池中“启用32位应用程序”, 1,打开IIS应用程序池,选中相应应用程序池,点击右侧“高级设置” 2, ...
- JS控制A标记的href跳转
var a = document.getElementById("aHref"); a.href = '/user'; //取消<a>标签原先的onclick事件,使& ...