关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回

stark组件5_扩展url

发布时间:2022-09-11 23:37:37

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 temp

site.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

另外有需要云服务器可以了解下风纳云fengnayun.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场(仅限教程资讯栏目),内容著作权归作者所有。转载内容仅用于参考、学习,无商业用途。由于互联网信息复制性强我们难以联系到全部原著作人,若页面内容侵犯了您的权益,我们深感抱歉,还请联系邮箱service@fengnayun.com我们将在第一时间按照著作人要求处理内容。
/template/Home/Dawn/PC/Static

选择风纳云,也许是您成就一番大事业的开端

注册账号