• [oldboy-django][2深入django]django目录说明 + 路由系统


    1 django project目录说明
    
        project
            - app01
                -- admin.py  #django自带后台管理
                -- apps.py   #app01配置文件
                -- models.py #编写类,创建数据库表
                -- test.py   #单元测试
                -- views.py  #业务处理函数
            - app02
    
    
    2 django 路由系统
        路由系统(url和视图函数的映射)
    
        1. 常见的路由设置(静态路由,动态路由,分组)
    
           r'^index/'                   -> def index(request)
           r'^add_user/(d+)/            --> def add_user(request, a1)
           r'^add_user/(?P<name>d+)/'   -> def add_user(request,name)
    
           ps:
                1 终止符
                    r'^index$'
                2 伪静态
                    r'^edit/(w+).html$'
    
        2 路由分发(二级路由,非常重要)-- 强烈推荐用这种写法
    
                 - 在day3目录下的urls.py,修改
                    from django.conf.urls import url, include
                    url(r'^app01/', include('app01.urls'))   # 注意include里面是字符串
    
                 - 在app01目录下新建urls.py,并修改如下
                    from django.conf.urls import url
                    from app01 import views
                    urlpatterns = [
                        url(r'^index.html$', views.index)
                    ]
    
                 - 修改views下面的index函数
    
    
        3 路由别名方向生成url(作用:根据url名字找到url或发生成新url)
    
            - 在视图python代码,获取url或生成url
                url(r'^index/', views.index, name='n1'),
                url(r'^index/(d+)/', views.index, name='n2'),
                url(r'^index/(?P<b3>d+)/', views.index, name='n3'),
    
                from django.shortcuts import reverse
                v = reverse('n1')
                print(v)
                    #/index/
                v = reverse('n2', args=(5555,))
                print(v)
                    #/index/444/
                v = reverse('n3', kwargs={'b3':444,})
                print(v)
                    #/index/555/
    
            - 在模板Html中获取url
                 url(r'^index/', views.index, name='n1'),
                {% url 'n1' %}  # 得到的是/index/
    
                url(r'^index/(d+)/', views.index, name='n2'),
                {% url 'n1' 8 %}  # 得到的是/index/8/
    
                url(r'^index/(d+)/(d+)', views.index, name='n2'),
                {% url 'n1' 8 9 %}  # 到的是/index/8/9/

          
           二级路由:
              url(r'^product/',include('product.urls', namespace="product")),
        
              url(r'^pc/products/$',views.pc_permanent_product_list_view,name='pc_permanent_product_list_view'),
              模板获取url
              {% url 'product:pc_permanent_product_list_view' %}

    4 路由系统详细 a. 静态路由 url(r'^index/', views.index), url(r'^new_edit/(w+)/(+w)/', views.new_edit), url(r'^new_edit/(?P<a1>w+)/(?P<a2>w+)', views.new_edit), url(r'^edit/', views.edit), -- http://127.0.0.1:8000/edit/?nid=2 -- def edit(request): nid = request.GET.get('nid') b. 动态路由 - 位置参数 url(r'^new_edit/(w+)', views.new_edit), -- http://127.0.0.1:8000/new_edit/alex -- def new_edit(request,a1): #其中的a1位alex - 关键字参数(分组) url(r'^new_edit/(?P<a1>w+)/(?P<a2>w+)', views.new_edit), -- def new_edit(request,a1,a2): #其中的a1位alex c. 路由别名 d. 反向路由 e. 路由分发 f. 路由写法:开始符^, 终止符$, 伪静态.html 5 权限管理(根据url别名) 用户登录后显示用户权限的菜单(菜单是一个a连接,<a href={{根据别名转成的url}}></a>) 所以在数据库只要存储权限菜单url的别名即可
  • 相关阅读:
    Orchard CMS中如何打包不带源码的模块
    牛X的CSS3
    Docker指令
    Spring Boot 应用 发布到Docker
    Haproxy全透明代理
    TCP/IP协议理解
    ubuntu tomcat 部署java web
    UDP"打洞"原理
    java多线程-线程通信
    window环境下杀死tomcat
  • 原文地址:https://www.cnblogs.com/liuzhipenglove/p/7755205.html
Copyright © 2020-2023  润新知