zoukankan      html  css  js  c++  java
  • django框架基础路由系统长期维护

    ##################   路由系统介绍    #######################

    路由系统就是路径和函数的对应关系,
    路由系统可以看成支撑你这个网站的目录,就像是一本书一样,
    这个url对应关系,就是路由系统,
    1,在django2.0中不再是url,而是path,其他的都一样, 2,url里面有四个部分,url(正则表达式,函数,参数,别名) from django.conf.urls import url urlpatterns = [ url(正则表达式, views视图函数,参数,别名), ] 前两个用的最多,第三个参数基本不用,别名在反向解析的时候有用, 3,正则表达式,这一个就可以玩出很多的花样来,需要再研究一下正则表达式,这个很有用, 分组匹配,相当于给视图传递位置参数,需要在视图函数中接收,在编辑和删除的的url中就会用到, 可以分组命名匹配,相当于给视图传递关键字参数, 两个不能混着用,会覆盖的,

    ##################   路由系统--include其他的URLconfs     #######################

    现在写的路由文件,都是在一个文件写的,是在项目的url.py文件写的,
    如果app,多了之后,就要做分组了,
    url(r'^app01/', include(urls))
    #先从一级路由开始找,然后到二级路由,
    #这种在项目中app比较多的时候会用到,

    ##################   路由系统---命名URL和URL反向解析     #######################

    为什么需要反向解析?

    背景:
    url现在很多都是写死的,但是如果动了之后很容易影响一大片,怎么办?
    解决方案:
    可以对url起一个别名,然后反向解析成url
    反向解析,就是使用找别名,然后去找对应关系,这种可以更加的灵活,这样改动页面链接的时候,代码是不用动的,
    实际工作中很少去改动这个url的,但是不排除,因为路径就是有人想要改,

     命名:

    url(r'^home', views.home, name='home'),  # 给我的url匹配模式起名为 home
    url(r'^index/(\d*)', views.index, name='index'),  # 给我的url匹配模式起名为index

    在html中引用:

    在模板里面可以这样引用:
    <p><a href="{% url 'json_test' %}">测试一下别名的页面</a></p>
    <p><a href="{% url 'book' 2018 'sd' %}">带参数的url</a></p>

    在视图中引用;

    在views函数中可以这样引用:
    from django.urls import reverse
    def home(request):
        # redirect_url=reverse('json_test')  # json_test就是url的别名,
        # print(redirect_url)
        # return redirect(redirect_url)  # 重定向这个url,
        # json_test 这个是不带参数的,可以直接写,
    
        # redirect_url=reverse('book',kwargs={'year':2018,'title':'aa'})
        # print(redirect_url)
        # #这种是解析带参数的,

    ##################   路由系统     #######################

    路由匹配规则:
    1,r 是正则表达式中防止转义的符号,例如在python/n代表换行,加上r就不换行了。 2,$ 正则表达式中表示以什么什么结束,在这里就是以2003/结束,以其他字符结束则不匹配 3,^ 正则表达式中表示以什么什么开始,在这里表示以articles 开头,以其他开头则匹配不上。 4,(?p)代表分组,<month>相当于字典中的键值,[0-9]{2}相当于字典中的value。 5,这个路由是静态路由,就是固定得,路由只能这么写,才能找到对应得视图函数 6,这个是动态路由,就是活得,只要符合这个正则表达式,就可以找到这个视图函数,是活滴 关于正则匹配优先级 在url匹配列表中,如果第一条和第二条同时满足匹配规则,则优先匹配第一条。

    ##################   路由系统     #######################

    # include其他的URLconfs,路由转发
    
    from django.conf.urls import include, url
    urlpatterns = [
       url(r'^admin/', admin.site.urls),
       url(r'^blog/', include('blog.urls')),  # 可以包含其他的URLconfs文件
    ]
    
    
    ##############################
    from django.contrib import admin
    from django.urls import path,include
    from news import  urls
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('', include(urls),name='news'),
    
    ]

    ##################   路由系统     #######################

    ##################   路由系统     #######################

    ##################   路由系统     #######################

  • 相关阅读:
    VS2012配色方案
    ”Metro UI之磁贴(二)
    hdu 1068
    3.11 从多个表中返回丢失的数据
    腾讯马化腾:云服务的安全问题是我最忧虑的(通过云,180多人能挣了10亿美金的利润)
    王小川清华大学毕业典礼演讲:我也有过学渣经历(和时间做朋友,要和华军、天空这些下载站做合作推广)
    今天看到一个签名,有点意思
    DEP受保护的问题(尤其是Outlook)
    竹林蹊径-深入浅出Windows内核开发作者的博客
    Sublime和Codeblocks支持C++11
  • 原文地址:https://www.cnblogs.com/andy0816/p/12197676.html
Copyright © 2011-2022 走看看