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')]