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

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句(快捷方式)   
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容

  • 已经同步到gitbook,想阅读的请转到gitbook: Django 1.10 中文文档 URL dispatc...
    leyu阅读 14,181评论 0 16
  • 切换到创建项目的目录 cd C:\Users\admin\Desktop\DjangoProject创建名为pr...
    在努力中阅读 3,255评论 2 3
  • PythonWeb框架要点、Django介绍、工程搭建、配置、静态文件与路由 1.Python Web 框架要点 ...
    Cestine阅读 1,414评论 0 6
  • 今天中午,我、小S、妈妈、悠悠阿姨一起去吃牛肉。 小S提议:“我们去杭发场旁边的一家商场吧,那里有很多牛肉店!” ...
    清绝无为阅读 722评论 1 1
  • 身为一个东北人,最烦躁的就是有话不说,憋着还对你满心的不满。可是渐渐的,我发现,有很多时候,我也变得畏畏缩缩,有些...
    第八族阅读 385评论 0 0