设为首页 加入收藏

TOP

快速实现增删改查组件(起步阶段!!!)(三)
2017-12-18 12:37:24 】 浏览:472
Tags:快速 实现 删改 组件 起步 阶段
_btn = True # ======这个方法可自定制(如果把show_add_btn设置为False就不会显示添加按钮)===== def get_show_add_btn(self): return self.show_add_btn

 功能四:当点击编辑,删除,添加按钮的时候的跳转路径,动态生成

return render(request, "stark/change_list_views.html",{"add_url":self.get_add_url(),"show_add_btn":self.get_show_add_btn()})

 利用反向解析reverse

 # =================url相关,reverse反向解析=============
    def get_change_url(self,nid):
        name = "stark:%s_%s_change"%(self.model_class._meta.app_label,self.model_class._meta.model_name)
        edit_url = reverse(name,args=(nid,))  #反向解析只要找到他的name属性,就会找到他对应的路径
        return edit_url

    def get_add_url(self):
        name = "stark:%s_%s_add" % (self.model_class._meta.app_label, self.model_class._meta.model_name)
        edit_url = reverse(name)
        return edit_url

    def get_delete_url(self, nid):
        name = "stark:%s_%s_delete" % (self.model_class._meta.app_label, self.model_class._meta.model_name)
        edit_url = reverse(name,args=(nid,))
        return edit_url

    def get_list_url(self):
        name = "stark:%s_%s_changelist" % (self.model_class._meta.app_label, self.model_class._meta.model_name)
        edit_url = reverse(name)
        return edit_url

 功能五:添加,删除,编辑功能(利用MOdelForm)

  model_form_class=None
    def get_model_form_class(self):
        if self.model_form_class:   #如果自己定制了就用自己的,在这就什么也不返回了,如果没有自己定义就返回默认的这个Form
            return self.model_form_class
        # 方式一定义ModelForm
        # class TestModelForm(ModelForm):
        #     class Meta:
        #         model = self.model_class
        #         fields = "__all__"
        # return TestModelForm
        # 方式二定义
        Meta = type("Meta", (object,), {"model": self.model_class, "fields": "__all__"})
        TestModelForm = type("TestModelForm", (ModelForm,), {"Meta": Meta})
        return TestModelForm
def add_views(self,request,*args,**kwargs): model_form_class = self.get_model_form_class() if request.method=="GET": form = model_form_class() return render(request,"stark/add_view.html",{"form":form}) else: form = model_form_class(request.POST) if form.is_valid(): form.save() return redirect(self.get_list_url()) else: return render(request, "stark/add_view.html", {"form": form}) def delete_view(self, request,nid, *args, **kwargs): self.model_class.objects.filter(pk=nid).delete() return redirect(self.get_list_url()) def change_views(self, request,nid, *args, **kwargs): model_form_class = self.get_model_form_class() obj = self.model_class.objects.filter(pk=nid).first() if not obj: return redirect(self.get_list_url()) if request.method == "GET": form = model_form_class(instance=obj) return render(request, "stark/edit_view.html", {"form": form}) else: form = model_form_class(data=request.POST,instance=obj) if form.is_valid(): form.save() return redirect(self.get_list_url()) else: return render(request, "stark/edit_view.html", {"form": form})

 功能六:额外扩展url

  # =============路由系统,对应相应的视图函数=====================
    def get_urls(self):
        app_model_name = (self.model_class._meta.app_label,self.model_class._meta.model_name)
        all_url = [
            url(r'^$', self.change_list_views,name="%s_%s_chan
首页 上一页 1 2 3 4 5 下一页 尾页 3/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇从nginx日志原始二进制数据还原文.. 下一篇python 参数

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目