stark组件开发之URL别名的设置
from django.urls import re_path
from stark.servers.start_v1 import site, StartHandler
from django.http import HttpResponse, JsonResponse
from app01 import models class 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
stark组件开发之URL别名的设置的更多相关文章
- stark组件开发之URL分发和默认Handler
为register 函数添加一个,prev参数,默认None ,用于可以让用户自己指定前缀. def register(self, model_class, handler_class=None, p ...
- iOS开发之APP推送设置WIFI
在iOS开发过程中,有时需要连接网络.当访问请求,检测到网络不可用时,需要提示用户手动进行设置网络并告知用户操作路径设置可用的网络. 只需一行代码即可实现: - (void)viewDidLoad { ...
- iOS开发之AppIcon及LaunchScreen设置
一.AppIcon设置 具体设置步骤如下图: 二.LaunchScreen设置与停留时间设置 具体设置步骤如下图: 通过程序可以增加背景的停留时间:
- iOS开发之iOS程序偏好设置(Settings Bundle)的使用
目录[-] 1.添加设置项 2.设置的控件 3.编辑设置项的文件 4.在程序中获取Settings 和写入Settings 添加UI 5.实现读取设置和保存代码 在Android手机上, 在某个程序里 ...
- 【读书笔记】iOS-iOS开发之iOS程序偏好设置(Settings Bundle)的使用
在Android手机上, 在某个程序里,通过按Menu键,一般都会打开这个程序的设置,而在iOS里,系统提供了一个很好的保存程序设置的机制.就是使用Settings Bundle. 在按了HOME键的 ...
- dt二次开发之-url伪静态的自定义
dt内核的方便性在于代码内核完全开源,都可以根据自身需要进行优化整改,个人在这段时间的深入研究,发现这套内核的方便性,今天继续给大家分享下DT的url伪静态如何自定义函数. url自定义文件是在api ...
- IOS开发之UILabel动态高度设置方法
项目中有这样的需求,要显示一本书的概述,默认显示2行,点击展开按钮,显示全部,点击收回,有显示2行. 开始的时候按钮事件中,可能写的是这样一段代码: if (isExpand) { [lblBrief ...
- python 全栈开发,Day112(内容回顾,单例模式,路由系统,stark组件)
一.内容回顾 类可否作为字典的key 初级 举例: class Foo(object): pass _registry = { Foo:123 } print(_registry) 执行输出: {&l ...
- Android开发之旅5:应用程序基础及组件
引言 上篇Android开发之旅:应用程序基础及组件介绍了应用程序的基础知识及Android的四个组件,本篇将介绍如何激活组关闭组件等.本文的主题如下: 1.激活组件:意图(Intents) 1.1. ...
随机推荐
- mysql网课部分笔记
mysql> \s 查看当前数据库的状态 \c 取消当前所输入的命令或字符 ------------------------------------------------------- m ...
- English Conversation – Checking in at an airport
English Conversation – Checking in at an airport Share Tweet Share Tagged With: Ben Franklin Exercis ...
- Linux grep命令使用方法
Linux系统中grep命令可以根据指定的字符串或者正则表达式对文件内容进行匹配查找.在Linux文件处理和SHELL编程中使用广泛. grep基本语法 用法: grep [选项] "字符串 ...
- 2008-03-18 22:58 oracle基础知识小结
oracle 数据类型: 字段类型 中文说明 限制条件 ...
- PR(Precision-Recall)曲线和mAP指标
来自: https://www.zhihu.com/question/41540197 https://www.douban.com/note/518998773/ 作者:水哥链接:https://w ...
- Ubuntu系统查看mongo得慢日志,及一些操作
摘要 在MySQL中,慢查询日志是经常作为我们优化查询的依据,那在MongoDB中是否有类似的功能呢?答案是肯定的,那就是开启Profiling功能.该工具在运行的实例上收集有关MongoDB的写操作 ...
- 大型运输行业实战_day11_1_aop理论与aop实际业务操作
1.aop概述 Spring的AOP:什么叫做AOP:Aspect oritention programming(面向切面编程)什么是切面:看图,业务方法 执行前后.AOP的目的:AOP能够将那些与业 ...
- linus上运行jar包文件增删查
package com.osplat.util; import com.alibaba.fastjson.JSON; import com.osplat.bean.Resultmodel; impor ...
- FP增加的索引
1.优化FP_BOM中第839行执行过慢问题,且会出现ORA-01652: 无法通过 128 (在表空间 STGTEMP 中) 扩展 temp 段ORA-06512: 在 "STG.FP_B ...
- xnconvert 图片转换工具
xnconvert是一款简单高效的图片转换工具.xnconvert能够批量地进行图片格式转换,并具有一定的图片处理功能,可以增加水印.特效,支持放大缩小.旋转等. xnconvert功能介绍: 你可以 ...