美文网首页
2019-02-16 url 解析,重定向 ,和模板

2019-02-16 url 解析,重定向 ,和模板

作者: 太阳出来我爬山坡 | 来源:发表于2019-02-16 18:09 被阅读0次

url结构:
例子:http://www.baidu.com:8080/news/index.html?id=1111%page=12#name
协议// 域名(ip):端口/ 路径 ? 参数 #锚点
1.url:
网址 全网统一资源定位符
格式
2.django 的路由系统
当一个请求来到时
1.首先到项目目录下的urls.py(根URlconf模块)中,查找路由规则
2.根URlconf模块,里面定义了 urlpatterns变量
3.urlpatterns 是一个(django.url.path 或 django.urls.re_path对象 )列表
4.按顺序运行每个url模式,在第一个匹配的模式停止
5.一旦匹配,djangon导入并调用给定的视图
6.如果中间出错,或者没有匹配到,返回404

-path对象
path(route,view,kwargs=None,name=None)
router参数: 一个字符串的urlf规则  
    可以传参数 
    例: path('index/<参数1>-<参数2>',view)  #传递了 参数1,参数2 用 -间隔, 可以用其他符号
        path('index/<pk>-<date>',view1)  url:   http://0:8000/index/1-201801 
        path('index/<pk>/<date>',view1)  url:   http://0:8000/index/1/201801 
    
    在视图中 定义  def index(request,pk,date):  # 必填参数
                        return HttpResponse('lalallalala %s%s' %(pk, date))
-在url中捕获参数
    在url规则中使用<变量名>可以捕获url中的值
    传递给视图
    **默认捕获值是 str 字符串
    path('index/<int:pk>',view1)  # 定义参数的数值类型
    1.str 匹配了'/'路径分割符之外的所有字符
    
    2.int  匹配任意整型   ,会转换成 int 类型
    http://192.168.3.20:8000/detail/12/
    参数值为:12
    3.slug 匹配任意ascll字符 加上连字符和下划线
    
    4.uuid 格式化id
    http://192.168.3.20:8000/uuider/9b1deee5-4035-4398-b5f9-54ba28c94566/
    参数值为:9b1deee5-4035-4398-b5f9-54ba28c94566/
    5.path 匹配任意非空字符
    http://192.168.3.20:8000/pather/a/b/c/
    参数值为:a/b/c/
    
-使用正则表达式re_path()
    re_path(r'student/(\d{4})/([0][1-9]|1[0-2])/', views.student)
    http://192.168.3.20:8000/student/2018/09/
    re_path(r'student/(?P<year>\d{4})/(?P<month>[0][1-9]|1[0-2])/', views.student)
      ?P<year> ?P<month> 指定变量
    python 中正则表达式的分组命名 (?P<name>正则表达式)

- django 搜索url 搜索什么?
    只搜索url的路径部分,  跟 参数 以及请求方法 无关
    同一个url 可以匹配 get  post
    

    
-传递额外参数kwargs
    kwargs 字典类型
        path('detail/<int:pk>/', views.detail, kwargs={'pk':20}) 
        额外参数和 路径中捕获的参数 同名时, 覆盖路径中的参数
        path('detail/<int:pk>/', include('teatch'), kwargs={'pk':20})
            下级url组中teatch下url都 将带上 这个额外参数
            
    
-包含其他 URLconfs
    include
    根urls
    urlpatterns =[
        path('teatch/',include('teacher.urls'))    导入子app 'teacher'下的urls
        path('teatch/<参数>',include('teacher.urls'))    导入子app 'teacher'下的urls
    ]
       上级路径中的参数和额外参数 会传到下级路径 对象中去.
    子app urlpatterns
    1.views 应该写在app的目录中
        app的urls 
        http://192.168.3.20:8000/teacher/detail/2018/09/)
        子app中下级路径
        
-重定向 
    
    view 中 
    from django.shortcuts import render, redirect ,reverse
    # 导入 render渲染(作用把对象变成 文本, 用于返回给服务器)   
    # redirect重定向
    # reverse 解析path对象的 name
    例: path('index/',views.index,name='index')
        path('news/',views.news,name='news')
    在view 中
        def index(request):
            url = reverse('path对象名')   #返回 url  
            return redirect(url)
            
    path(name='index') 作用 路径不管怎么改都不影响 url 功能        
    
    -app_name =app名称
        定义在app文件夹下的urlconf模块中
        
    reverse('student:index')     student为 app_name; 多个app都可以有 name名为index 的path对象名
    
2.模板系统
    html 源码写到模板文件中
    -模板路径设置
    项目目录下的settings.TEMPLATES
    BACKEND:模板引擎
    DIRS:模板路径  (一般模板放在项目根目录下.)
      DIRS: [os.path.join(BASE_DIR, 'templates')] #项目根目录下的templates目录
        
    在视图文件中
    from django.template.loader import get_template
    
    def index(request):
    #如果模板文件index.html 在项目根目录\templates\teacher\index.html
        tp = get_template('teacher/index.html') #直接写templates之后的路径/index.html,之前的 已经在setting中设置
        html = tp.render()  # 渲染 成 str字符串
        return HttpResponse(html)
    #return render(request,'teacher/index.html') 代替上的3句(快捷方式)   

相关文章

  • 2019-02-16 url 解析,重定向 ,和模板

    url结构:例子:http://www.baidu.com:8080/news/index.html?id=111...

  • django02-url和模板

    Day02 url和模板 1. URL 2. 反向解析 3. 模板 模版继承和bootstrap的使用

  • Django-4模板

    反向解析,根据规则生成url,所以namespace是可以用于解析. 自动生成url所以url改变也不用更改模板了...

  • Apache URL重定向配置专题

    Url重定向机制简述 Rewrite url重定向就是实现URL的跳转和隐藏真实地址,基于Perl语言的正则表达式...

  • HTTP

    状态码301,302,307,308区别解析 301:永久重定向,表示请求的url的资源被永久转移到另一个url,...

  • Flask框架——模板变量、控制块、过滤器

    在上篇文章中,我们学习了Flask框架——重定向、url_for,这篇文章我们学习Flask框架——模板变量、控制...

  • Asp.Net Core Url Rewrite

    在《Asp.Net Core Url Redirect》中使用重定向解决Url问题,还是有些不理想:重定向的Url...

  • Apache .htaccess

    原文链接1原文链接2原文链接3原文链接4 URL 重定向 URL重定向(URL redirection,或称网址重...

  • URL重定向漏洞

    原文链接:秋水表哥博客 0X00: 什么是url重定向? URL重定向(URL redirection,或称网址重...

  • django中URL反向解析总结(url/reverse/get

    前言介绍 Django中进行URL反向解析一般有以下三种方式 在模板中使用 {% url 'blog:detail...

网友评论

      本文标题:2019-02-16 url 解析,重定向 ,和模板

      本文链接:https://www.haomeiwen.com/subject/cmjieqtx.html