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

 

posted @ 2018-08-17 10:19  帅到要去报警  阅读(3045)  评论(1编辑  收藏  举报