from   django.shortcuts import HttpResponse
def test(request):
return HttpResponse('test') from django.conf.urls import url,include
from myblog2 import config_views
from django.contrib import admin def test1(requets):
return HttpResponse('test1') def test2(requets):
return HttpResponse('test2') def add(requets,id):
return HttpResponse('add/%s'%id)
def list(requets):
return HttpResponse('list')
def delete(requets,id):
return HttpResponse('delete/%s'%id)
def change(requets,id):
return HttpResponse('change/%s'%id) def get_url_action(): action_dic=[]
action_dic.append(url('^$',list))###这个里面什么都不放,就但访问上一个页面的时候,就是查看内容
action_dic.append(url('^(\d+)/add/$',add))##加了$就表示后面不能在往下面url分发执行
action_dic.append(url('^(\d+)change$',change))
action_dic.append(url('^(\d+)/delete/$',change))
# action_dic.append(url('^\d+/delete/$',change))
#####注明一下,()是当做一个参数传到views里面

执行结果:delete/2

    return   action_dic

def get_url():
print('执行这个get_url的部分')
print(admin.site._registry)
tem=[]
for app_obj,admin_app_obj in admin.site._registry.items():
print(app_obj)##这个是一个类变量(form app01.models import User 这个User也是类变量 <class 'django.contrib.auth.models.User'> 类型)
app_name=app_obj._meta.app_label
############这个是拿这个app的名字,字符串的形式
model_name=app_obj._meta.model_name
###这个是可以拿到里面这个app01里面全部的表的名字 ,全部给取出来,字符串的形式了 print('打印出app名字是',app_name)
print('拿到全部的表的名字:',model_name)
    
      # tem.append(url(r'^{0}/{1}/$'.format(app_name,model_name),test2))
'''
这个是一级分发url
''' tem.append(url(r'^{0}/{1}/'.format(app_name,model_name),(get_url_action(),None,None)))
    #首先执行这个一级分发,然后在执行这个二级分发,之前这个不能加$,否则就不能往下面分发url下去了
'''
二级分发url,可以在往下面分发url
''' print(tem)
'''
[<URLPattern '^auth/group'>, <URLPattern '^auth/user'>, <URLPattern '^app01/userinfo'>, <URLPattern '^app01/article'>]
'''
return tem urlpatterns=[
url('^index',config_views.index),
url('^test',test),
url('^yunxin/',(get_url(),None,None)),
] 下面是另一种方式: ''' url('^yunxin/',(
[
url(r'^test3/',([
url(r'^test4',test2),
url(r'^test5',test2),
] ,None,None)), url(r'^test1',test1),
url(r'^test2', test2),
],None,None )) ''' None,None
###第一个是app的名字,第二个是命名空间的名字,后面两个可以自己取值,总之要传参数进去,什么值都可以传进去,不能缺少 '''
上面的尖叫号的作用,下面的url必须紧贴着上一个url,前面不能加其他值进来,否则是找不到这个url的
也就是说必须以什么开头,后面必须紧贴着下一个url
re.findall('^index/','/yunxin/index/tets1')
这个是匹配不了的,因为后面没有以index开头
'''

url分发(二级分发)的更多相关文章

  1. django路由的二级分发

    基于二级分发设计url路由 path('index/', views.index), path('index/', ([ path('test01/', test01), path('test02/' ...

  2. stark 组件 url 二级分发的实现

    模拟 admin 组件url设计思路 项目urls 文件中: from django.contrib import admin from django.urls import path from st ...

  3. Netty-Websocket 根据URL路由,分发机制的实现

    最近在做netty整合websocket,发现网上很多项目都是最简单的demo,单例的一个项目. 然而公司的项目需要接受几个不同功能的ws协议消息,因此最好是用URL来区分,让页面上采用不同的链接方式 ...

  4. Django 的路由层URL 分组 路由分发 反向解析

    URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调 ...

  5. Django admin组件源码流程

    admin 组件 Django 自带的用户后台组件 用于用户便携的操作 admin 组件核心 启动 注册 设计url 启动核心代码 每个app 通过 apps.py 扫描 admin.py 文件 并执 ...

  6. Django之stark组件

    现在让我说啥是stark组件,我也说不清楚.反正从今天讲的知识来看,今天完成的就是自己写一个模块,这个模块包含了admin后台管理工具的一些比较好用的功能,我们把它提炼出来,也就是相当于自己写一个ad ...

  7. CRM系统之stark组件流程分析

    CRM系统主要通过自定义stark组件来实现的(参照admin系统自定义): STARK组件: 1 admin组件 1 如何使用admin 2 admin源码 3 创建自己的admin组件:stark ...

  8. url分发、isinstance、request.GET请求之QueryDict和urlencode、post和get请求、limit_choices_to(Model字段)

    这个的路径是怎么来的,是有一个个的url路由分发过来的 这两个是相等的,若url后面加括号了,那么前面就不用这个装饰器了:反之,若装饰器使用了,那么这个url后面就不要加括号了 eg:其他的views ...

  9. 单例模式及设计url分发

      1.单例模式 2.admin源码解析 3.注册源码流程图 3.admin之url方法的使用 4.admin源码之url设计 5.设计url源码流程 6.总结 1.单例模式 https://www. ...

随机推荐

  1. 细说REST API安全之概述

    目前许多前后端应用都采取REST架构风格,前端应用和后端服务通过API进行数据交换.通过REST API在网络中进行数据交换时很容易被网络抓包,然后进行恶意批量调用,最终导致后端服务不堪负重而影响正常 ...

  2. EFCodeFirst示例

    1.定义一个基础模板类 namespace WebApplication1.Models { /// <summary> /// 可持久到数据库的领域模型的基类. /// </sum ...

  3. luogu 4377 Talent show 01分数规划+背包dp

    01分数规划+背包dp 将分式下面的部分向右边挪过去,通过二分答案验证, 注意二分答案中如果验证的mid是int那么l=mid+1,r=mid-1,double类型中r=mid,l=mid; 背包dp ...

  4. 获取当前div以外所有部分

    $("功能区域的id").click(function(e){ $(this).show(); e.stopPropagation();//阻止冒泡 }); $("父类区 ...

  5. node之http模块总结

    [文档归档文] 参考文献:https://nodejs.org/dist/latest-v6.x/docs/api/http.html

  6. 向dnsrecord.txt 中添加 配置

    #!/bin/bash Ip_addr=`cat /etc/dnsrecord.txt |awk '{print $1}' |head -1` Check_dns_url(){ grep $1 /et ...

  7. JQuery-change/select/submit

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. Visual Studio 2013 在使用 razor无智能提示的解决办法

    网上看到的方法都差不多,但是我感觉没怎么说详细,因此,截图备注下: 1.开始->Microsoft Visual Studio 2013->Visual Studio  Tools-> ...

  9. ListBox、ListCtrl

    设置编辑框滚动条在最新的位置 //CEdit* editBox=(CEdit*)GetDlgItem(IDC_EDIT_RECV); //(editBox->LineScroll(editBox ...

  10. Binary Tree HDU - 5573 (思维)

    题目链接: B - Binary Tree  HDU - 5573 题目大意: 给定一颗二叉树,根结点权值为1,左孩子权值是父节点的两倍,右孩子是两倍+1: 给定 n 和 k,让你找一条从根结点走到第 ...