• 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开头
    '''
  • 相关阅读:
    map方法,以及filter方法的使用
    detach与remove区别,以及detach保留被删除的元素数据,使用
    jQuery 文档操作
    javascript 清空数组的方法
    jquery遍历数组的方式
    Oracle表空间不足处理
    css 文本超出2行就隐藏并且显示省略号
    Vim中的寄存器
    spacemacs怎样配置编辑器显示行号?
    Docker考前突击
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/9799320.html
Copyright © 2020-2023  润新知