stark組件5_擴充url

來源:互聯網
上載者:User

標籤:[]   direct   ref   處理   end   one   header   remove   lis   

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.