# 示例: urlpatterns = [ path(route, view, kwargs=None, name=None), re_path(正則表達式, views視圖函數, 參數, 別名), ] # 參數說明: # 一個正則表達式字符串 # 一個可調用對象,一般爲一個視圖函數或一個指定視圖函數路徑的字符串 # 可選的要傳遞給視圖函數的默認參數(字典形式) # 一個可選的name參數 # 示例一: # mysite/mysite/urls.py from django.urls import path, re_path from blog import views urlpatterns = [ path('cur_time', views.cur_time), path('userInfo', views.userInfo), re_path(r'^articles/2003/$', views.special_case_2003), re_path(r'^articles/([0-9]{4})/$', views.year_archive) re_path(r'^articles/([0-9]{4})/([0-9]{2})/', views.month_archive) ] # mysite/blog/views.py def special_case_2003(req): return HttpResponse('2003') def year_archive(req, y): # 參數y接收: ([0-9]{4}) 傳入的值 return HttpResponse('year':y) def month_archive(req, y, m): return HttpResponse('year:'+y+'month:'+m) # 參數y接收: ([0-9]{4}) 傳入的值, m 接收([0-9]{2}) # 示例二: Named groups # 預備知識: 正則表達式 import re ret = re.search('(?P<id>\d{3})/(?P<name>\w{3})', 'wwwwwfffttt555/ooo') print(ret.group()) # 輸出: 555/ooo print(ret.group('id')) # 輸出: 555 print(ret.group('name')) # 輸出: ooo # mysite/mysite/urls.py from django.urls import path, re_path from blog import views urlpatterns = [ re_path(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/', views.month_archive) ] # mysite/blog/views.py def month_archive(req, year, month): # 此處形參必須爲 year,month return HttpResponse('year:'+year+'month:'+month) # 示例三: # mysite/mysite/urls.py from django.urls import path, re_path from blog import views urlpatterns = [ re_path(r'^index/(?P<name>[0-9]{4})/', views.index, {'name':'xiaohu'}) ] # mysite/blog/views.py def index(req, name): # 此處形參必須爲 name return HttpResponse(name) # 參數 {'name':'xiaohu'} 會覆蓋URL中的參數 # 示例四: # mysite/mysite/urls.py from django.urls import path, re_path from blog import views urlpatterns = [ re_path(r'^index/', views.index, name='book') # name表示URL的別名 re_path(r'^/movie/index/', views.index, name='book') ] # mysite/blog/views.py def index(req): if req.method=='POST': username=req.POST.get('username') pwd=req.POST.get('pwd') if username=='xiaohu' and pwd=='123': return HttpResponse('登陸成功!') return render(req, 'login.html') # mysite/templates/login.html <body> <!-- 相比於 action='/index/', URL地址更靈活 -- <form action="{% url 'book' %}" method="post"> <input type="text" name="username"> <input type="password" name="pwd"> <input type="submit" value="submit"> </form> </body> # 訪問地址: http://localhost:8080/index http://localhost:8080/movie/index
參考資料html