url路由配置及渲染方式
一、路由系统
路由功能:分发请求
url:全球统一资源定位符,俗称网址
http 默认端口:80;https 默认端口:443
路由配置文件为:urls.py文件,又叫url配置模块(urlconf模块)
打开urls.py文件,在urlpatterns=[ ]中写路由配置以元组形式写入列表中,例:path('index/',views.index_view);‘index/’表示这个为自定义路径;views.index_view表示调用views.py文件中的视图函数
注:前面路由会覆盖后面路由
1、path函数的介绍
path函数可以接收(route,view,kwargs=None,name=None)
route : 表示是一个字符串url规则;
view : 表示是一个视图;
kwargs : 表示额外的参数,是一个字典形式
name : 表示为url规则取的名字
2、url捕获参数
方法如下:
2.1 转换器(用冒号连接)
A、str:匹配除了路径分隔符“/”之外的所有字符串
例:path('student_detail/<str:pk>/',views.student_detail_view);pk为views.py文件中一个视图函数里的一个参数
B、int:匹配0或任何正整数
C、slug:匹配任意的ASCII字符或数字组成的slug字符串,连字符和下划线
D、path:匹配任何非空字符串,包括路径分隔符“/”
2.2 使用正则表达式匹配(注:获取的参数都会转换为字符串)
调用 from django.urls import re_path方法,参数(route,view,kwargs=None,name=None)
例:re_path(r'students_detail/(?P<pk>\d+)/', view.student_detail)或者
re_path(r'students/(?P<year>\d{4})-(?P<month>\d{2})-(?P<name>.*?)/',views.students)
3、include用法(根目录urls.py调用app文件夹的urls.py)
# 在创建好的app文件夹中新建一个urls.py文件,写好路由
# 然后到根目录中urls.py文件中导入模块(from django.urls import include)
# 例:path('teacher/',include('teacher.urls');'teacher.urls'表示在teacher文件夹下的urls.py文件
# include可以是多层,可以在app文件中用include,然后在根目录中include
4、kwargs参数
kwargs:表示关健字参数传到视图参数里
例1:path('student_detail/<str:pk>/',views.student_detail,kwargs={'arg1' : 'value1', 'arg2' : 'value2'})
注:视图参数里必需要定义arg1,arg2参数,不然会报错
例2:path('student_detail/<str:pk>/',views.student_detail,kwargs={'pk' : 'value1', 'arg2' : 'value2'})
注:当url参数与关健参数一致时,以关健参数为主
5、name参数
name:表示为url规则定义名字
例:在teacher文件夹下的urls.py文件中导入模块from django.shortcuts import redirect,reverse
写入path('home/',views.index_view,name='index')
然后在views.py文件中的视图函数中写入home_url = reverse('teacher.index');return redirect(home_url)
‘teacher.index’表示调用teacher文件夹里urls.py文件中名字定义为index的url
注:这种写法可以动态生成
6、重定向(redirect函数)
重定向:表示跳转到指定页面
例:在views.py视图函数中写入return redirect('http://www.baidu.com')就可跳转到百度页面
--------------------------------------------------------------------------------------------------------------------------------
二、模板系统
# 在项目根目录下新建个templates文件夹,再在下面新建一个teacher文件夹,在新建一个html文件存在里面
# 然后在settings下设置模板路径,在TEMPLATES参数中‘DIRS’:[os.path.join(BASE_DIR,'templates')]
例:在teacher文件夹下views.py导入模块(from django.template.loader import get_template)
def index_view(request):
t = get_template('teacher/index.html')
html = t.render()
return HttpResponse(html)