Django-路由系統

路由系統

  • 1.單一路由對應

    seo 搜索引擎的錄入權重

<ul>
    {% for item in user_list %}
    <li>{{ item }}|<a href="/edit/?nid={{ item }}">編輯</a></li>
    {% endfor %}
</ul>


urlpatterns = [
    url(r'^index$', views.index),
]

/?id=XXXX/ 這樣get傳值,seo優先級不高


  • 2.基於正則的路由
<ul>
    {% for item in user_list %}
    <li>{{ item }}|<a href="/edit/{{ item }}">編輯</a></li>
    {% endfor %}
</ul>

<ul>
    {% for item in user_list %}
    <li>{{ item }}|<a href="/edit/{{ item }}.html">編輯</a></li>
    {% endfor %}
</ul>


urlpatterns = [
    url(r'^edit/(\w+)/', views.edit),
    url(r'^edit/(\w+).html$', views.edit),
    # 僞靜態 seo 權重更高
    # $ 終止符 如果遇到瀏覽器自動在末尾加/,清除緩存後解決。
]


def edit(request,a1):
    return HttpResponse(a1)

  • 3.帶參數的路由

<ul>
    {% for item in user_list %}
    <li>{{ item }}|<a href="/edit/{{ item }}/33/">編輯</a></li>
    {% endfor %}
</ul>

urlpatterns = [
    url(r'^edit/(?P<a1>\w+)/(?P<a2>\w+)/', views.edit),
]

def edit(request,a1,a2):

    return HttpResponse(json.dumps((a1,a2)))

  • 4.路由分發
# urls.py
urlpatterns = [
    url(r'^app01/', include('app01.urls')),
]
# app01.urls.py
urlpatterns = [
    url(r'^index$', views.index),
]
  • 5.設置默認頁面
def default(request):
    return HttpResponse('not find!')

urlpatterns = [
    url(r'^',default),# 放在最後
]
  • 6.爲路由映射設置別名
def index(request):
    user_list = [
        'spring',
        'summer',
        'autumn',
        'winter',
    ]
    v = reverse('n1')
    print(v)

    return render(request,'index.html',{'user_list':user_list})


urlpatterns = [
    url(r'^index/', views.index,name='n1'),
]

<body>
    <form method='POST' action="{%url 'n1'%}"
    ...
</body>




def edit(request,a1):
    v = reverse('n2',args=(1,))
    print(v)

    return HttpResponse(json.dumps(a1))
urlpatterns = [
    url(r'^edit/(\w+)', views.edit,name='n2'),
]

<body>
    <form method='POST' action="{% url 'n1' i %}" #傳值
    ...
</body>



def edit(request,a1,a2):
    v = reverse('n2',kwargs={'a1':222,'a2':333})
    print(v)

    return HttpResponse(json.dumps((a1,a2)))
urlpatterns = [
    url(r'^edit/(?P<a1>\w+)/(?P<a2>\w+)/',
    views.edit,name='n2'),
]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章