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