<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 路由定義位置 django的路由是定義在 `urls.py` 文件下的 `urlpatterns` 列表中的。 `urls.py` 文件是路由解析的入口。 ```python from django.conf.urls import url from . import views urlpatterns = [ url(r'^', views.index, name="index") ] ``` 一般每個子應用為了獨立,都有自己的 `urls.py` 來保存該應用的路由,然后使用 `include` 函數把子路由包含在主路由中。 ```python # 子路由 from django.conf.urls import url from . import views urlpatterns = [ url(r'^', views.index, name="index") ] ``` ```python # 使用include函數把子路由包含在主路由中 from django.conf.urls import url, include from django.contrib import admin urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^demo/', include("demo.urls")) ] ``` 也可以把所有的路由都定義在主路由中,子應用不再設置。 ```python from django.conf.urls import url from django.contrib import admin from demo.views import index urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^demo/', index) ] ``` ## 路由的解析順序 django的路由解析是從上到下的,django接收到一個請求后,他會從主工程的路由文件中 `urls.py`下的 `urlpatterns` 列表從上到下匹配,匹配到一個符合規則的路由,會執行后邊的函數。如果后邊是 `include` 函數,則會進入包含的子路由中,從上到下匹配。 如果django匹配到一個符合規則的路由,會立即執行后面的函數,而不會繼續向下執行。所以,當上邊的匹配規則如果包含了下邊的規則,可能會把下邊的路由屏蔽掉。 ```python urlpatterns = [ url(r'^say', views.say), url(r'^sayhello', views.sayhello), ] ``` 即使訪問 `sayhello` 路徑,他也會進入到 `say` 函數執行,因為他先匹配成功了 `say` 的路由規則。 所以定義路由規則描述要準確,或者用 `/` 結尾。 ## 路由命名 在定義路由的時候,可以指定第三個參數,來為路由起別名 1. 使用 `include` 定義的路由時,在 `include` 函數中使用關鍵字參數 `namespace` 定義命名空間 ```python urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^demo/', include("demo.urls", namespace="demo")) ] ``` - 命名空間的作用:避免不同應用中的路由使用了相同的名字發生沖突,使用命名空間區別開。 2. 只使用 `url` 定義路由時,使用關鍵字參數 `name` 定義路由名字 ```python urlpatterns = [ url(r'^', views.index, name="index") ] ``` ## reverse反解析 使用reverse函數,可以根據路由名稱,返回具體的路徑,如: ```python from django.core.urlresolvers import reverse # 注意導包路徑 def index(request): return HttpResponse("hello world!") def say(request): url = reverse('users:index') # 返回 /users/index/ print(url) return HttpResponse('say') ``` - 對于未指明namespace的,reverse(路由name) - 對于指明namespace的,reverse(命名空間namespace:路由name)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看