前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django实战-添加应用

Django实战-添加应用

作者头像
小团子
发布2019-09-05 16:17:45
7151
发布2019-09-05 16:17:45
举报
文章被收录于专栏:数据云团数据云团

Django实战-应用列表

Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。

完成了小程序九宫格的应用渲染,在用户登录后即可添加不同的应用。在之前的用户授权登录中,将 cookie 保存至 storage,这样就可以判定用户是否通过了服务端的登录验证。

一、服务端

代码语言:javascript
复制
from django.views import View

① 需要判断用户是否登录,再返回用户已经添加的应用。

代码语言:javascript
复制
def get(self, request):
    if not already_authorized(request):
        response = self.wrap_json_response(code=ReturnCode.UNAUTHORIZED)
            return JsonResponse(response, safe=False)
    # 否则返回用户定制的 menu
    open_id = request.session.get("open_id")
    user = User.objects.get(open_id=open_id)
    menu_list = user.menu.all()

    user_menu = []
    # 获取用户模型,将序列化字段都追加至添加应用列表中
    for app in menu_list:
        user_menu.append(app.to_dict())
    response = self.wrap_json_response(data=user_menu, code=ReturnCode.SUCCESS)
    return JsonResponse(response, safe=False)

判断是否已经授权

代码语言:javascript
复制
def already_authorized(request):
    is_authorized = False
    if request.session.get("is_authorized"):
        is_authorized = True
    return is_authorized

② 用户添加应用

代码语言:javascript
复制
def post(self, request):
    if not already_authorized(request):
        response = self.wrap_json_response(code=ReturnCode.UNAUTHORIZED)
        return JsonResponse(response, safe=False)

    user = get_user(request)
    # 接收用户添加应用的请求参数
    post_menu = json.loads(request.body.decode('utf-8'))
    post_menu = post_menu.get("data")
    focus_menu = []
    for item in post_menu:
        print(item)
        # 获取应用 appid
        print(item.get("appid"))
        # 通过 appid 找到对应的应用
        item = App.objects.get(appid=item.get("appid"))
        print("用户菜单", item)
        focus_menu.append(item)
    print(focus_menu)
    # 用户创建应用
    user.menu.create(focus_menu)
    user.save()
    response = CommonResponseMixin.wrap_json_response(code=ReturnCode.SUCCESS)
    return JsonResponse(response, safe=False)

路由

代码语言:javascript
复制
from django.urls import path

from .views import menu

urlpatterns = [
    path("menu/list", menu.get_menu),
    path("menu/user", menu.UserMenu.as_view()),
]
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档