Django——视图
一、反向解析路由
在html(模板)使用反向解析来获取访问的视图函数的完整的URL路径 。在配置路由的时候 , 需要给url去一个名字 , 方便在html中进行反向解析。
在html中解析路由的格式:{% url URL模式名称 参数%}
当路由模式名字一致 , 且路由的格式一致,则前者会被覆盖掉无法匹配到。
当一个有参数一个无参则不会发送覆盖。路由中有使用正则匹配或者使用不同转换器也不会发生覆盖。
re_path('^$' , views.index),
path('study/' , views.study),
path('user/<path:data>/' , views.user),
path('helloworld/',views.helloworld,name='hi'),
path('helloworld/<path:data>/' , views.url_data , name='data'),
path('hello/',views.demo,name='hi'),
<a href="/app2/study/">快来点击 , 点击有奖</a>
<a href="/app2/user/369/abc">不要点击</a>
<!-- 反向解析url的路径 -->
<a href="{% url 'hi' %}">欢迎光临</a>
<a href="{% url 'data' 'ac123'%}">带参的反向解析</a>
<a href="{% url 'hi' %}">重名</a>
在后端中的视图函数中解析路由 , 使用reverse(url模式名称)
def study(request):
# 在视图函数中解析出是哪个路由要响应这个视图函数的
return HttpResponse(f'当前请求的url为:{reverse("sty")}')
def user(request , data):
# 解析带参数的路由
# reverse(url , args=[参数列表]/kwargs={参数字典})
# return HttpResponse(f'当前请求的url为:{reverse("uu" , args=[data])}')
return HttpResponse(f'当前请求的url为:{reverse("uu" , kwargs={"data":data})}')
使用视图函数的名称进行反向解析 , 跟上面的操作类似。
def helloworld(request):
return HttpResponse(f'反向解析路由:你好 , 欢迎光临 , 来到这个进行学习/'
f' 解析出来的路由为{reverse(helloworld)}')
二、静态文件处理
在一个网页网站中不能只有纯html的东西 , 为了渲染会使用图片 ,css , JavaScript。
静态文件是整个网站项目都通用的内容。将这些静态文件同一放到静态文件夹中方便管理。这个文件的名称为static。这个文件夹要放在项目的根目录下一级也就是更应用文件夹同级别。
在里面存放的内容做好区分 , 方便管理 , css样式——css文件夹中 , 图片——img……
配置静态文件夹
# 告诉django,;浏览器发送请求为/static/开头的访问的静态文件
STATIC_URL = '/static/'
# 配置静态文件的搜索路径
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]