django urls

url 与 path

django 2.0 发布之后,url使用方面与1.11有蛮大的变化。下面举几个小栗子来说明(代码就是最好的文档:p)

from django.conf.urls import url,include # 1.11与2.0
from django.urls import path,re_path,include # 2.0

urlpatterns = [
    url('^$',index,name='index'),
    path('', index,name='index'),
    
    url('^register/$',register,name='register'),
    path('register/', register,name='register'),

    url('^articles/(?P<year>[0-9]{4})/$', articles,name='articles'),
    path('articles/<int:year>/',articles,name='articles'),
]

  

如何管理多个app下的路由分发,使得管理更加清晰?

1. 在app下创建urls.py文件

from django.urls import path,re_path
      
from myapp.views import IndexView 
      
      
urlpatterns = [  
    path(r'index/', IndexView.as_view(),name="index"),
]

2.在myproject/myproject/urls.py配置

from django.urls import url,path,include
      
urlpatterns = [  
    path(r'myapp/',include("myapp.urls")),#包含myapp中的urls
]  

reverse

好处,就是需要修改url路径时仅需修改一处即可。与tempaltes中的{ url 'index' }情形是一样的。

from django.urls import reverse
from django.http import HttpResponseRedirect

class LogoutView(View):
    """
    用户登出
    """
    def get(self, request):
        logout(request)
        return HttpResponseRedirect(reverse("index"))

  

原文地址:https://www.cnblogs.com/zenan/p/10196205.html