Django---路由如何配置


具體配置在項目配置文件夾下的 urls.py:

from index import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/', views.index),
]

index的意思就是:訪問 index 路由到 index 應用下的 index 方法:

上面給出的是更像是 面向函數式編程,還可以路由到類:

同樣是在 index應用下的view中,新建類:

這里的訪問:訪問change則會路由到 viws下面的 Index類。

這里可以對 get 和 post 分開處理。

上面就是兩種:面向函數式編程,和面向對象式編程。兩者可以結合起來用。

正則路由

簡答示例:

urlpatterns = [
    url(r'admin/', admin.site.urls),
    url(r'index/', views.index),
    url(r'list/', views.list),
    url(r'lists/', views.lists),
    url(r'change/',views.Index.as_view()),# 路由到類
    url(r'details-(\d+).html',views.details) # 正則路由
]

控制器:

def lists(request):
    USER_INFO = { '1':'root1','2':'root2','3':'root3','4':'root4'}
    return render(request,'lists.html',{'user_info':USER_INFO})

def details(request,nid):
    if request.method == "GET":
        print(nid)
        return HttpResponse('15545')

模板:

<!-- 拿到 key 和 value -->
{% for k,v in user_info.items %}
    <p><a href="/details-{{ k }}.html">{{ k }}----{{ v }}</a></p>
{% endfor %}

 這樣路由,形參的nid必須是第一個,如果傳遞多個參數:正則分組:

urlpatterns = [
    url(r'admin/', admin.site.urls),
    url(r'index/', views.index),
    url(r'list/', views.list),
    url(r'lists/', views.lists),
    url(r'change/',views.Index.as_view()),# 路由到類
    #url(r'details-(\d+).html',views.details),
    url(r'details-(?P<nid>\d+)-(?P<uid>\d+).html',views.details),
]

模板:

<!-- 拿到 key 和 value -->
{% for k,v in user_info.items %}
    <p><a href="/details-{{ k }}-55.html">{{ k }}----{{ v }}</a></p>
{% endfor %}

這樣:無論形參數的順序變化,都可以接受

def details(request,uid,nid):
    if request.method == "GET":
        print(nid)
        print(uid)
        return HttpResponse('15545')

還有一種接受方式:

def func(request,*args,**kwargs):
    pass

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM