zoukankan      html  css  js  c++  java
  • url分发(二级分发)



    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开头
    '''
  • 相关阅读:
    【Yii2.0】1.5 Yii2.0新特性记录
    【PHP7.0】PHP7.0 小知识点摘录
    【PHP7.0】PHP7.0学习笔记目录
    【Yii2.0】1.4 Apache2.4.23基于主机名的虚拟主机配置
    【Yii2.0】2.2 Yii2.0 Basic代码中路由链接被转义的处理
    【Yii2.0】1.3 MySQL5.7.15修改root密码
    [Leetcode 106] 130 Surrounded Regions
    [Leetcode 105] 90 Subsets II
    [Leetcode 104] 131 Palindrome Partitioning
    [Leetcode 103] 37 Sudoku Solver
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/9799320.html
Copyright © 2011-2022 走看看