如何让 Django urls.py 识别 url 中的 # (hash)?

Posted

技术标签:

【中文标题】如何让 Django urls.py 识别 url 中的 # (hash)?【英文标题】:How to get Django urls.py to recognize # (hash) in url? 【发布时间】:2012-02-14 11:33:29 【问题描述】:

假设我希望通过urls.py 将以下网址与 django 视图匹配:www.mysite.com/cake/#vanilla

urls.py 我有这样的东西:

url('^cake/#.*/$', app.views.view ),

所以基本上我希望所有以 root:www.mysite.com/cake/# 开头的 url 都由这个视图处理。但是,django urls 似乎将 # 视为 %23,因此所有具有根 www.mysite.com/cake/%23 的 url 都由该视图处理。如何获取 url('^cake/#.*/$', app.views.view ) 中的井号,将其视为实际井号而不是 %23?

感谢您的帮助!

【问题讨论】:

不能做。哈希不会发送到服务器。 这里有一个 SO 问题更详细地解释了这一点:***.com/questions/3664257/… 【参考方案1】:

您需要强制您的用户使用 winetricks 的 IE7。它是唯一存在在 HTTP 请求中发送哈希和内容的错误的浏览器 :)

如果已经修复,那么你需要强制你的用户使用去年版本的 winetricks 中的 IE7。

正如亚当所说,浏览器应该将哈希部分发送到服务器。在 url 中使用哈希对于 deezer 之类的网站很常见,因为它可以让用户在不重新加载页面的情况下导航(所有导航都在 javascript 中处理)。这允许在不中断/重新加载 Flash 中的音乐播放器的情况下进行导航。

如果你想启用哈希浏览,那么你可以使用这样的插件:http://tkyk.github.com/jquery-history-plugin/

【讨论】:

以上是关于如何让 Django urls.py 识别 url 中的 # (hash)?的主要内容,如果未能解决你的问题,请参考以下文章

django-hosts 强制重新加载不同的 urls.py

Django 和 urls.py:如何通过命名 url 进行 HttpResponseRedirect?

如何在 Django 中使用来自 urls.py 的变量重定向 url 模式?

Django Rest Framework - 如何在 urls.py 中获取 Http 标头信息

刷新 django 中的 urls.py 缓存

如何在我的 Django urls.py 中使用单个正则表达式捕获多个参数?