Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。
完成了小程序九宫格的应用渲染,在用户登录后即可添加不同的应用。在之前的用户授权登录中,将 cookie 保存至 storage,这样就可以判定用户是否通过了服务端的登录验证。
一、服务端
from django.views import View
① 需要判断用户是否登录,再返回用户已经添加的应用。
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)
判断是否已经授权
def already_authorized(request):
is_authorized = False
if request.session.get("is_authorized"):
is_authorized = True
return is_authorized
② 用户添加应用
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)
路由
from django.urls import path
from .views import menu
urlpatterns = [
path("menu/list", menu.get_menu),
path("menu/user", menu.UserMenu.as_view()),
]