【问题标题】:Django URL pattern issues in Safari, but not Firefox?Safari 中的 Django URL 模式问题,但不是 Firefox?
【发布时间】:2011-06-30 19:17:48
【问题描述】:

刚接触 Django,遇到了一个奇怪的问题:Firefox 完全按照我们应用程序中建立的 URL 模式运行,但 Safari 出现错误提示:

Django tried these URL patterns, in this order:
  ^admin/doc/
  ^admin/(.*)
  ^auth/
  ^game/
  ^static/(?P<path>.*)$
The current URL, , didn't match any of these.

所以看起来没有匹配的 URL,但为什么它适用于一个客户端而不适用于另一个? Safari 有什么不同?

编辑后包含 game/urls.py 和根级别的 urls.py(应该有 2 个文件吗?):

(游戏/urls.py)

from django.conf.urls.defaults import *

urlpatterns = patterns('game.views',
    (r'^$', 'index'),
    (r'^dashboard/', 'dashboard'),
    (r'^details/(?P<venue_id>\d+)/$', 'details'),
)

(urls.py)

from django.conf.urls.defaults import *


# Uncomment the next two lines to enable the admin:                                                                     
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Example:                                                                                                          
    # (r'^starsquare/', include('starsquare.foo.urls')),                                                                

    # Uncomment the admin/doc line below and add 'django.contrib.admindocs'                                             
    # to INSTALLED_APPS to enable admin documentation:                                                                  
    (r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:                                                                      
    #(r'^admin/(.*)', include(admin.site.urls)),                                                                        
    (r'^admin/(.*)', admin.site.root),

    (r'^auth/', include('djangofoursquare.urls')),

    #game                                                                                                               
    (r'^game/',include('game.urls')),
    (r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': '/home/username/dev/starsquare/game/static'})

)

【问题讨论】:

  • 以“Django 已尝试...”开头的部分是在这种情况下您将从 Django 看到的错误消息;它也很可能认为当前 URL 什么都不是。
  • 您确定在两个浏览器中使用完全相同的 URL、尾部斜杠等等?
  • 如果当前 URL 什么都不是,那么尝试将规则 r"^$" 附加到您想要查看的默认视图中。根据我自己的经验,在所有规则的底部添加这个,让 Django 在没有找到匹配项后抓取它。

标签: django url safari design-patterns


【解决方案1】:

感谢大家的反馈,事实证明这是与 URL 中的服务器名称有关的配置问题。 server.com/ 有效,但 www.server.com/ 无效!一个浏览器指向一个 URL,另一个浏览器指向另一个。

【讨论】:

    【解决方案2】:

    我相信这不是 Safari 的问题...好吧,您可以测试所有其他浏览器,但应该没什么区别。向我们展示您的完整 urls.py 文件,您可以在其中定义 url 模式以及您尝试访问的 url。

    【讨论】:

    • 我现在将添加完整的 urls.py。
    • 好的,谢谢。当您看到此错误时,您尝试访问的 URL 是什么?关于有两个用于 url 的文件 - 很好。你可以有很多 urls.py 文件,其中定义了规则。
    • 我想通了!事实证明它毕竟是 URL - 一个浏览器指向 www.server.com,另一个指向 server.com。这显然是某种配置问题,它不喜欢 www。在 URL 的前面。
    • 嘿... :) 是的,发生了 :) 建议您将服务器配置为将 www 和不带 www 的服务器重定向(301 重定向)到同一个地方。这总是一个好主意,这不仅是为了避免您遇到的问题,而且对于搜索引擎也是如此。干杯。
    【解决方案3】:

    如果您正确编码 URL,则应该在所有浏览器中都可以正常工作。我不认为这是 Django 的问题。

    向我们提供有关错误和 url 的更多信息。

    【讨论】:

    • 错误已经发布,两个浏览器的URL相同,urls.py文件已添加到原始帖子中。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    • 2021-10-14
    • 2011-09-04
    • 2011-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多