Django官方文档和Web上的其他教程总是在url的末尾使用尾部斜杠.例如:
url(r'^accounts/login/', views.login) # login view in turn calls login.html
# instead of
url(r'^accounts/login', views.login)
Run Code Online (Sandbox Code Playgroud)
由于accounts是目录而且login (login.html)是文件,我们不应该使用第二个URL吗?这也将使GET参数看起来更有条理:
accounts/login?name='abc' # login is a file that is accepting parameters
vs.
accounts/login/?name='abc' # login directory (maybe index) is accepting parameters??
Run Code Online (Sandbox Code Playgroud)
All*_*ітy 20
Django的核心设计理念之一是URL应该是美丽的.
所以有些网址accounts/detail?name='abc'应该映射为accounts/detail/abc/.您可以在网址配置中使用正则表达式捕获它.这里的URL非常整洁,用户友好.这将有助于搜索引擎正确索引您的页面(现在您可以忘记rel=canonical),并将有助于搜索引擎优化.
现在是斜杠的原因,考虑一个about.html在路径上为用户相对解析的视图(在任何框架中),users/awesomeUser
既然users/awesomeUser又users/awesomeUser/不同,
如果用户在users/awesomeUser,浏览器将解析它,users/about.html因为没有我们不想要的尾部斜杠
如果用户在users/awesomeUser/,浏览器将解析它,users/awesomeUser/about.html因为有一个尾部斜杠
child相对family/parent/的family/parent/child.child相对family/parent的family/child.
从技术上讲,foo.com/bar和foo.com/bar/是两个不同的URL,搜索引擎机器人(以及一些Web流量分析工具)会将它们视为单独的页面.Django应该努力"规范化"URL,以便搜索引擎机器人不会混淆.
这是APPEND_SLASH设置背后的原因.(APPEND_SLASH允许您强制将斜杠附加到URL)
user/awesomeUser和user/awesomeUser/.rest_framework除非您APPEND_SLASH=False在设置中明确定义并且trailing_slash=False必须使用每个路由器(如果使用路由器),否则不能使POST/PUT/PATCH/DELETE方法使用.这就像你基本上要跳过这个大多数时间而且你要浪费很多时间来调试它.Django建议append slashes并不强迫它.
它取决于开发人员是否附加斜杠.
| 归档时间: |
|
| 查看次数: |
8552 次 |
| 最近记录: |