Home >  > 一天学会Python Web框架(十三)前台页面与接口整合

一天学会Python Web框架(十三)前台页面与接口整合

0

由于我们前后台系统没有分开,所以前台页面调用接口时,可以直接使用后台管理系统已经完成的接口,不过后台管理系统接口的访问加上了登录验证,所以需要将前台要用到的接口进行处理,让它们设置到白名单当中

一、添加日志访问的路由
打开main.py文件,将以下代码

# 过滤不用做任何操作的路由(即过滤不用进行判断是否登录和记录日志的url)
if path_info in ['/favicon.ico', '/', '/api/verify/']:
    return

改成:


# 过滤不用做任何操作的路由(即过滤不用进行判断是否登录和记录日志的url)
if path_info in ['/favicon.ico', '/', '/api/verify/'] or path_info.find('/upload/') > -1:
    return

二、过滤不必要进行验证的操作

对于前台获取公司介绍、联系我们、产品分类、产品列表和产品信息的接口,我们可以将它们添加到这里来,进行过滤。

找到下面代码

# 过滤不用进行登录权限判断的路由(登录与退出登录不用检查是否已经登录)
url_list = ["/api/login/", "/api/logout/"]
if path_info in url_list:
    pass

改成

# 过滤不用进行登录权限判断的路由(登录与退出登录不用检查是否已经登录)
url_list = ["/api/login/", "/api/logout/", "/api/about/", "/api/contact_us/", "/api/product_class/"]
if path_info in url_list or (request.method == 'GET' and path_info.find('/api/product/') > -1):
    pass

三、测试效果

因为我们使用的是RESTful风格的路由,获取产品信息、修改产品信息和删除产品信息路由url是一样的,只是通过get/put/delete来进行区分,所以我们在处理时,需要获取客户端的提交方式是GET还是PUT或DELETE,然后进行区分处理。

我们知道获取产品信息的接口路由是:@get('/api/product//') ,它会根据产品id的不同而不同,所以我们可以通过request.method == 'GET' 来判断当前访问提交的是GET方式,而且访问的路径是/api/product/时,我们就不做权限判断处理。

点击main.py运行debug,然后在浏览器上输入:http://127.0.0.1:81/api/about/ 就可以看到已经可以取到数据了。

四、修改index.html
打开index.html页面代码,将公司介绍那部分html代码删掉,替换成下面加上id标签的代码

<img id="about_img" width="600" height="150">
<br><br>
<span id="about"></span>

在底部javascript脚本中添加下面ajax代码

//读取服务器记录
    $.ajax({
        url: "/api/about/",
        type: "GET",
        dataType: 'json',
        success: function (data) {
            $("#about_img").attr('src', data.data.front_cover_img);
            $("#about").text(data.data.content);
        }
    });

五、测试效果
在浏览器中输入http://127.0.0.1:81/index.html,就可以看到首页的内容是从我们的数据库中取出来的了。

本文暂无标签

发表评论

*

*