分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

stark组件5_扩展url

发布时间:2023-09-06 02:13责任编辑:赖小花关键词:url组件
Stark组件扩展url

这个功能在很多地方都要用到
这里举例的需求是在customer查看页面中,点击咨询课程中的某一个课程名称就会将这个课程与对应的同学解绑(不再显示)
要实现这个需求需要新添加一条url,这条url中我们可以获取想要解绑的课程id和表中这条记录的主键

方法与filter、pop等功能相同,都是在表所对应的自己的配置类中设置,从而实现之后这种表才有这条独立的url

在stark.py中,我们给Customer这张表设置独立的配置类,extra_url会返回一个url,对应的视图函数为self.cancel_course:

class CustomerConfig(ModelStark): ???#处理课程的显示样式和每个课程对应的url,url中带有要解绑的课程id和表中这条记录的主键id ???def display_course(self, obj=None, is_header=False): ???????if is_header: ???????????return "咨询课程" ???????temp = [] ???????for course_obj in obj.course.all(): ???????????s = "<a href=‘/stark/crm/customer/cancel_course/%s/%s‘ style=‘border:1px solid #369;padding:3px 6px‘><span>%s</span></a>&nbsp" % (obj.pk, course_obj.pk, course_obj.name) ???????????temp.append(s) ???????return mark_safe("".join(temp)) ???#视图函数,实现点击后删除功能 ???def cancel_course(self, request, customer_id, course_id): ???????obj = Customer.objects.filter(pk=customer_id).first() ???????obj.course.remove(course_id) ???????#返回当前表的查看页面 ???????return redirect(self.get_list_url()) ???#新的url,点击相应课程就会走到这条url来,这是只单独为Customer添加一条url ???def extra_url(self): ???????temp = [] ???????temp.append(url(r"cancel_course/(\d+)/(\d+)", self.cancel_course)) ???????return tempsite.register(Customer, CustomerConfig)

在sites.py中,我们设置一个通用的extra_url功能,但返回是空,所以其他表对应的url中没有cancel_course/(\d+)/(\d+):

class ModelStark(): ?#配置类 ???def extra_url(self): ???????return [] ???#我们在二级分发中将这条url添加到temp列表中 ???def get_urls2(self): ???????#额外添加一个url ???????temp.extend(self.extra_url()) ???????return temp

stark组件5_扩展url

原文地址:http://blog.51cto.com/dzm911/2171664

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved