Django后台开发框架PWDF添加新功能模块

此处我们以添加一个简单的前台主页为例子,介绍一下PWDF框架的基本使用流程。过程很简单,如下几步:

1、创建新app,并在目录中创建对应的控制器目录和文件,注册app

2、创建模板目录,并在目录中添加模板文件

3、编写控制器代码,编写模板代码,加载并渲染模板,返回模板

4、添加路由条目,并在后台框架中新增管理模块链接

5、根据需要设置访问权限

下边我们一步一步说:

1、创建新app,并在目录中创建对应的控制器目录和文件,注册app

加载并运行Pycharm开发环境后,通过Tools菜单打开Run Manage.py Task命令行工具,输入startapp front新建app,新建完成后,将新app的整个目录剪切到apps目录下边。同时在front目录下创建views目录用来放置新模块的控制器文件(注意,views文件中要新创建一个__init__.py空文件,以声明这是一个包,不然无法引用)

2、创建模板目录,并在目录中添加模板文件

在框架的templates目录下创建Front目录,同时创建Index.html前台展示模板和IndexManage.html后台管理模板,此处我们没有实现详细的管理功能。

3、编写控制器代码,编写模板代码,加载并渲染模板,返回模板

(1)编写模板代码。主模板代码我们只是简单的输出了Hello World。管理模板代码由于要嵌入到后台管理框架上,所有要加载一些对应的头。

\

(2)编写控制器代码。这里要在控制器文件中实现Index和IndexManage两个控制器。

# _*_ coding: utf-8 _*_
__author__ = 'seesky@hstecs.com'
__date__ = '2019/2/28 8:09'

from apps.hadmin.MvcAppUtilties.LoginAuthorize import LoginAuthorize
from django.http.response import HttpResponse
from django.template import loader
from apps.hadmin.MvcAppUtilties.CommonUtils import CommonUtils

def IndexManage(request):
    """
    前台管理主页
    """
    response = HttpResponse()
    tmp = loader.get_template('Front/IndexManage.html')  # 加载模板
    render_content = {}  # 将要渲染到模板的数据
    new_body = tmp.render(render_content)  # 渲染模板
    response.content = new_body  # 设置返回内容
    return response

def Index(request):
    """
    前台主页
    """
    response = HttpResponse()
    tmp = loader.get_template('Front/Index.html')  # 加载模板
    render_content = {}  # 将要渲染到模板的数据
    new_body = tmp.render(render_content)  # 渲染模板
    response.content = new_body  # 设置返回内容
    return response

4、添加路由条目,并在后台框架中新增管理模块链接:

(1)首先在front目录中的urls.py文件中添加两个控制器的路由:

# _*_ coding: utf-8 _*_
__author__ = 'seesky@hstecs.com'
__date__ = '2019/2/28 8:30'

from django.conf.urls import url
import apps.front.views.FrontController_views as FrontAdmin

urlpatterns = [
    url(r'^Index/', FrontAdmin.Index),
    url(r'^IndexManage/', FrontAdmin.IndexManage),
]

(2)然后再hpwf目录下的总控urls.py文件中包含front模块的二级路由文件

from django.urls import path
from apps.bizlogic.views import PiuserTest
from django.conf.urls import url, include
from apps.hadmin.views import LoginController_view
app_name = '[hadmin]'

urlpatterns = [
    url(r'^$', LoginController_view.Index),
    url(r'^piusertest/$', PiuserTest.as_view(), name='piusertest'),
    url(r'^Admin/', include('hadmin.urls')),
    url(r'^Api/', include('api.urls')),
    url(r'^Front/', include('front.urls'))
]

到这里我们的页面已经可以访问了,我们用浏览器或者是其他访问工具访问一下两个链接看一下效果:

通过我们设置的路由,已经可以正确的访问到页面了。接下来将前台管理链接添加到后台框架中。我们登录管理后台http://127.0.0.1:8000/Admin/Index/,然后打开系统管理-模块管理,在案例模块下方新建一个前台管理模块,填写对应的模块信息。保存后刷新界面就可以在左侧的案例模块中看到我们所添加的新模块了:

5、根据需要设置访问权限

到目前为止,我们的前台界面和管理界面已经可以正常访问了。但是还没有设置访问权限,任何用户都可以访问。接下来我们根据需要设置访问权限。过程很简单,例如前台管理的控制器需要登录有有权限的用户才能访问,登录控制我们只需要在控制器上添加@LoginAuthorize装饰器,而功能权限我们可以添加@IsAuthorized装饰器。注意登录控制装饰器不需要参数,而功能权限检测的装饰器需要制定一个唯一的权限码。这个权限码在代码中指定后,第一次访问的时候会在数据库中自动创建操作权限项(注意非管理员用户登录访问才会生成这个操作权限),我们就可以把这个操作权限分配给特定的组织、角色或者个人了。下边看代码:
@LoginAuthorize
@IsAuthorized("Front.IndexManage")
def IndexManage(request):
    """
    前台管理主页
    """
    response = HttpResponse()
    tmp = loader.get_template('Front/IndexManage.html')  # 加载模板
    render_content = {}  # 将要渲染到模板的数据
    new_body = tmp.render(render_content)  # 渲染模板
    response.content = new_body  # 设置返回内容
    return response

此处我们只给IndexManage方法添加了修饰。退出登录再访问一下,将会自动退回到登录界面让你登录了。

接下来我们在后台自定义这个操作权限,系统管理-操作权限管理,新增操作权限,注意这里所填写的权限编码就是你在控制器中设置的编码:

目前为止所有的工作已经完成了。你可以在后台权限管理配置中给组织机构、角色和用户分别独立的设置访问权限了。其他的更复杂的管理和展示功能只需要在对应的控制器中编写代码即可,过程一目了然。

评论 1