ジャンゴURLエイリアスとリバースDNS名前空間

URLエイリアスと逆引き

  1. 私たちは通常、プロジェクトが大きすぎると、URL名は、死んで書き、それを変更するファイル名を投影する必要がある、それは一般的なトラブルではないので、それを変更するので、私たちは時にエイリアスURLの未来の定義プレイしていますかかわらず、その別名を使用するファイルのそんなに多く便利です、あなたがパスの名前を変更する方法に関係なく、あなたの操作には影響しません

  2. あなたは、URLの別名を再生するにはどうすればよいです

    url(r'^home1/',views.home,name='home'),
    # 像这样,在url后边加一个name叫做home,之后再其他的文件中需要引用这个url就可以直接使用别名
    
    url(r'^home1/(\d+)',views.home,name='home'),
    # 如果分组传参数的这种url要怎么去应用呢
  3. 別名の使用(逆解析

    #在文件中使用时,我们需要导入一个django的模块,这个模块就是专门用来负责反向解析别名的
    from django.urls import reverse
    #使用如下
    reverse('别名')
    #例如:
    return redirect(reverse('home'))     ----  翻译成  /home1/
    # 我们只需要在需要使用这个文件的时候将这个文件的别名使用reverse()方法反解析出来就行了
    
    或者直接可以写成 return redirect('home')    不需要使用serverse也可以解析出来
    
    # 在html文件中的引用
    <a href="{% url 'home' %} ">主页面</a>    ----  翻译成  /home1/
    #使用url对这个别名进行解析
    
    #带参数的反向解析:
    reverse('index',args=(10,11,))   -- /index2/10/
    
    #带参数的反向解析:
    {% url '别名' 参数1 参数2 %} 
    例如:{% url 'index' 10 %} -- /index2/10/  <a href='/index2/10/'>hhh</a>

名前空間

ルートの配布

  1. これらのアプリケーションは、プロジェクトファイル内のURLのアプリのURLを書かれている場合は、ファイル・パスは、あまりにも、特に問題とそれらを変更存在するファイルの多くなる場合、プロジェクト内で複数の異なるアプリケーションを作成するための可能性を、私たちはしなければならないのでこの問題を解決します

  2. どのようにこの問題を解決するには?

    #我们可以在每个应用下都写上一个urls.py文件,在这个文件中写入我们需要用到的url,
    
    # 但是浏览器找的url时会从你的项目文件urls文件去找,那么我们需要在项目的urls文件也配置一下
    # 首先导入一个包,专门负责路由分发的
    from django.conf.urls import include  
    
    #所以我们在项目下的urls文件中写url时这样写:
    urlpatterns = [
        url(r'^app01/',include('app01.urls')),
        url(r'^app02/',include('app02.urls')),
    ]
    # 这个意思就会只要匹配到访问路径是app01的就去app01.urls中找路径,匹配到访问路径是app02的就去app02.urls中找路径
  3. 各アプリのファイルの下でルートファイルurls.pyを書きます

    1. app01 
        urlpatterns = [
            # url(r'^admin/', admin.site.urls),
            url(r'^home1/',views.home,name='home1'),
        ]
    
    2. app02 
        urlpatterns = [
            # url(r'^admin/', admin.site.urls),
            url(r'^home2/',views.home,name='home1'),
        ]
    
     # 当通过项目文件中的路由匹配到那个app下的时候就会在这个app路由中找相应的路由地址

名前空間

  1. 私たちはこのプロジェクトは、URLのエイリアスを与える行うときに、同じの複数のアプリケーションのURLの別名がある場合は、そのファイルをそこに見つけることができませんので、エラー

  2. だから我々は、設定を変更するには、プロジェクトファイル内のURLする必要があります

    urlpatterns = [
        url(r'^app01/',include('app01.urls',namespace='app01')),  
        url(r'^app02/',include('app02.urls',namespace='app02')),
    ]
    
    # namespace = '别名',意思是当前这个app01.urls中的url都归属于当前这个命名空间app01的
  3. ときにアプリケーション:

    #html文件中
    <a href="{% url 'app01:home' %}">返回首页</a>
    # 在别名的前面你需要加上这个命名空间的名称
    
    #在后端的文件中
    return redirect('app02:book2')   # 在别名的前面你需要加上这个命名空间的名称

おすすめ

転載: www.cnblogs.com/zhufanyu/p/11665512.html