完整的路由包括:路由地址、视图函数、可选变量、路由命名
1.路由定义规则
Django2.X路由定义
在APP中添加文件,将所有属于APP的路由都写入该文件中,容易管理和区分每个APP的路由地址,MyDjango文件夹中的urls.py是将每个APP中的urls.py统一管理。
这时在MyDjango文件夹中的urls.py需要设置
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),#指向内置Admin后台系统的路由文件sites.py
path('',include('My.urls')),#指向APP的路由文件urls.py
]
APP中的urls.py编写内容如下
from django.urls import path
from . import views
urlpatterns = [
path('', views.hello),
]
views.hello是指视图函数处理网站首页的用户请求和响应的过程。在My的views.py中编写函数
from django.shortcuts import render
# Create your views here.
def hello (request):
value = 'this is a test'
print(value)
return render(request,'hello.html')
路由变量的设置
为使路由具有多样性
路由的变量类型由字符类型、整型、slug和uuid
test
在APP的urls.py中添加
urlpatterns = [
#path('', views.hello),
path('<year>/<int:month>/<slug:day>',views.myvariable)
]
在views.py中添加
from django.http import HttpResponse
def myvariable(request,year,month,day):
return HttpResponse(str(year)+'/'+str(month)+'/'+str(day))
在浏览器中输入带有日期http://127.0.0.1:8000/2020/05/20则出现
若只输入http://127.0.0.1:8000
正则表达式的路由
进一步规范日期格式
urls.py中设置
from django.urls import path, re_path
from . import views
urlpatterns = [
#path('', views.hello),
# path('<year>/<int:month>/<slug:day>',views.myvariable)
re_path('(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2}).html',views.mydata)
]
views.py中设置
from django.http import HttpResponse
def mydata(request,year,month,day):
return HttpResponse(str(year)+'/'+str(month)+'/'+str(day))
末端”.html“为变量设置终止符,假如末端没有设置,在浏览器上输入无限长的字符串,路由也能正常访问。
2.命名空间与路由命名
命名空间namespace
创建一个新的APP,名为user
tip:
在pycharm的工具栏找到 Tools,点击之后会有“Run manage.py task”选项,点击它之后,在pycharm下面会出现一个输入界面,在里面输入“startapp appName(你的App名称)”,回车之后就可以在工程下面看到你新建的App了。
MyDjango的setting中INSTALLED_APPS中添加user
MyDjango的urls.py中
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('',include(('My.urls','My'),namespace = 'My')),
path('',include(('user.urls','user'),namespace = 'user'))
]
]
路由命名name
在APP中的urls.py中命名
from django.urls import path, re_path
from . import views
urlpatterns = [
path('', views.hello ,name = 'hello'),
]