Django urls.py
urls.py 路由与视图关系对应函数 - > 路由层无名分组和有名分组
# 前端 <a href="/index/content"></a> # urls.py ==> 在这里 content是括号里面d+正则匹配的数据 url(r'^index/(d+)',views.index) # views.py def index(request,任意参数) print(任意参数) -> 打印结果: content ...
# 前端 和上面一样 # urls.py url(r'^index/(?P<和后端一样的名字>d+)',和后端一样的名字): print(和后端一样的名字) -> 打印结果: content ...
反向解析前端的访问地址,会随着我后端的urls.py中的地址的变化而变化,使该结果可以直接访问对应的url # 前端 <a href="{% url 'name名字' %}"></a> -> url这个单词是固定的 # urls.py url(r'^index/',views.index,name='name名字') # views.py from django.shortcuts import render,HttpResponse,redirect,reverse def index(request): print(reverse('name名字')) ... # 这样后端也能实时的获取到修改后的访问地址,前端也不需要去修改,后端也不需要去修改. 反向解析+无名分组# 前端 <a href="{% url 'name名字' 数值 %}"></a> -> url这个单词是固定的 通常 数值 是主键 # urls.py url(r'^index/(d+)',reverse def index(request,xx): print(xx) -> 返回值是 数值 print(reverse('name名字',args=(123,))) -> 记住这样写 ... # 反向解析的别名,一定不要重复 反向解析+有名分组# 前端 <a href="{% url '别名' 数值 %}"></a> -> url这个单词是固定的 通常 数值 是主键 # urls.py url(r'^index/(?P<year>d+)',name='别名') # views.py from django.shortcuts import render,xx): print(xx) -> 返回值是 数值 print(reverse('别名',kwargs={'year': 123})) -> 记住这样写 ... # 反向解析的别名,一定不要重复 路由分发django里面的app可以有自己的static文件,templates文件夹,urls.py文件 项目名下面的urls.py不在做路由与视图函数对应关系 然后在app的urls.py完成路由与视图函数的对应关系 项目名下的urls.py完成的是路由的分发 1. 方式一 # 总urls.py from app01 import urls as app01_users from app02 import urls as app02_users from django.conf.urls import url,include url(r'^app01/',include(app01_users)) url(r'^app02/',include(app02_users)) 需要频繁导包,并且需要取别名,因为每个app下的urls.py文件名都是一样的 2. 方式二 # 总urls.py from django.conf.urls import url,include('app01.urls')) url(r'^app02/',include('app02.urls')) 这种是通过字符串的方式,不需要导包,用到的模块是 importlib,将我们写的字符串转化成导包的形式 名称空间在我们分开开发app的时候,可能会出现取相同的别名,并且反向解析的时候是不会自动拼接上这个别名是那个app下面的,所以我们有两种方法去解决 方式一: # 总urls.py from django.conf.urls import url,include(app01_users,namespace='app01')) url(r'^app02/',include(app02_users,namespace='app02')) 这种方式就会在取别名的时候弹出来提示 方式二: 也不用很麻烦,就是取名字的时候默认自己拼接上app的名字 伪静态就是改一下urls.py文件中的搜索的路由名字,加上.html,把我们的网页伪装成静态的,百度会优先收录,就可能排在前面了,提高了搜索引擎的SEO查询优先级 但是---还是干不过人民币玩家 虚拟环境通常针对不同的项目 只会安装该项目所用的模块 用不到的一概不装 django版本区别django1.x 区别1: urls.py中1.x用的是url,而2.x用的是path 并且2.x中的path第一个不支持正则表达式,写什么就匹配什么 如果你觉得不好用,2.x里面还有re_path 这个re_path就是你1.x里面的url (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |