博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
stark组件开发之URL别名的设置
阅读量:4325 次
发布时间:2019-06-06

本文共 3773 字,大约阅读时间需要 12 分钟。

from django.urls import re_pathfrom stark.servers.start_v1 import site, StartHandlerfrom django.http import HttpResponse, JsonResponsefrom app01 import modelsclass DepartHandler(StartHandler):    '''定义增删改查'''    def extra_url(self):        return [            re_path("detail/(\d+)/$", self.detail_view)        ]    def detail_view(self):        return HttpResponse("详情页")site.register(models.Depart)  # 这个没有后缀site.register(models.Depart,prev="private")  # 这个有后缀

设置别名:

def get_urls(self):        # 获取每个model_class类。所在的app_name 和 他自己的 表名称model_name        app_label, model_name = self.model_class._meta.app_label, self.model_class._meta.model_name        partterns = [            re_path(r"list/$", self.check_list_view, name="%s_%s_list" % (app_label, model_name)),  # name="app名称_表名称_list"            re_path(r"add/$", self.add_view, name="%s_%s_add" % (app_label, model_name)),            re_path(r"change/(\d+)/$", self.change_view, name="%s_%s_change" % (app_label, model_name)),            re_path(r"del/$(\d+)/$", self.delete_view, name="%s_%s_del" % (app_label, model_name)),        ]        partterns.extend(self.extra_url())        return partterns

这里还有一个问题,就是  private 这个后缀。 因为这个是用户自己制定的。

可以看出 指定了后缀的,和没指定后缀的。 别名竟然是一样的。 所以还需要更改一下。代码逻辑。

首先肯定需要的是,prev 这个参数。 必须要能在  StartHandler 这个里面能够接收到,才可以用于做判断。
所以在传递参数阶段, 就需要把这个参数传递进来。

这里传的时候,是每一个 Handler 类!! 他们共同继承的都是 StartHandler。所以这个基类初始化函数中。 增加一个prev参数就好:

看效果还不错!

 优化一下:

class StartHandler(object):    def __init__(self, model_class, prve):        self.model_class = model_class        self.prev = prve    def check_list_view(self, request):        '''        列表查看页面        :param request:        :return:        '''        data_list = self.model_class.objects.all()        return render(request, "changelist.html", locals())    def add_view(self, request):        '''        添加页面        :param request:        :return:        '''        return HttpResponse("添加页面")    def change_view(self, request):        '''        编辑页面        :param request:        :return:        '''        return HttpResponse("编辑页面")    def delete_view(self, request):        '''        删除页面        :param request:        :return:        '''        return HttpResponse("删除页面")    def get_url_name(self, param):        '''        判断是否有后缀  prev。 进行拼接URL的别名        :param param: 页面后缀(list, add, change, del)        :return:        '''        app_label, model_name = self.model_class._meta.app_label, self.model_class._meta.model_name        if self.prev:            return "%s_%s_%s_%s" % (app_label, model_name, self.prev, param)        return "%s_%s_%s" % (app_label, model_name, param)    @property    def get_list_url_name(self):        '''获取列表页面URL 的name'''        return self.get_url_name("list")    @property    def get_add_url_name(self):        '''获取添加页面URL 的name'''        return self.get_url_name("add")    @property    def get_change_url_name(self):        '''获取修改页面URL 的name'''        return self.get_url_name("change")    @property    def get_del_url_name(self):        '''获取删除页面URL 的name'''        return self.get_url_name("del")    def get_urls(self):        # 获取每个model_class类。所在的app_name 和 他自己的 表名称model_name        app_label, model_name = self.model_class._meta.app_label, self.model_class._meta.model_name        partterns = [            re_path(r"list/$", self.check_list_view, name=self.get_list_url_name),            re_path(r"add/$", self.add_view, name=self.get_add_url_name),            re_path(r"change/(\d+)/$", self.change_view, name=self.get_change_url_name),            re_path(r"del/$(\d+)/$", self.delete_view, name=self.get_del_url_name),        ]        partterns.extend(self.extra_url())        return partterns    def extra_url(self):        return []
StarkHandler

 

转载于:https://www.cnblogs.com/chengege/p/10735323.html

你可能感兴趣的文章
JPanel重绘
查看>>
图片放大器——wpf
查看>>
SCALA STEP BY STEP
查看>>
cocos2d-x学习笔记
查看>>
MySql中的变量定义
查看>>
Ruby数组的操作
查看>>
hdu1181暴搜
查看>>
解码字符串 Decode String
查看>>
json学习笔记
查看>>
工具:linux 性能监控工具-nmon
查看>>
fatal error C1853
查看>>
Ural 1001 - Reverse Root
查看>>
玩转webpack之webpack的entry output
查看>>
java 操作mongodb查询条件的常用设置
查看>>
黑马程序员_java基础笔记(02)...java语言基础组成
查看>>
对innodb 拷贝文件实现数据库的方式(转)
查看>>
python知识点 2014-07-09
查看>>
FloatingActionButton的一点学习感悟
查看>>
ABAP CDS ON HANA-(10)項目結合して一つ項目として表示
查看>>
网站地址信息
查看>>