【问题标题】:Unable to match URL in URL.conf in Django?无法匹配 Django 中 URL.conf 中的 URL?
【发布时间】:2011-08-14 07:33:05
【问题描述】:

我做错了什么?

我的网址:http://localhost:8000/login/

来自 Django 的调试日志:

Page not found (404)
Request Method: GET
Request URL:    http://localhost:8000/login/
Using the URLconf defined in dealers.urls, Django tried these URL patterns, in this order:
^login|home/ ^login/$
^login|home/ ^home/$
^login|home/ ^home/dealer/(?P<dealer_id>\d+)/$
^admin/
The current URL, login/, didn't match any of these.

urls.py 文件:

from django.conf.urls.defaults import patterns, include, url

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
  (r'^login|home/',include('dealerpanel.urls')),
  (r'^admin/', include(admin.site.urls))
)

dealerpanel/urls.py:

from django.conf.urls.defaults import patterns, include, url

urlpatterns = patterns('dealerpanel.views',
  (r'^login/$','login'),
  (r'^home/$','home'),
  (r'^home/dealer/(?P<dealer_id>\d+)/$','details')
)

【问题讨论】:

    标签: python django django-urls


    【解决方案1】:
    ## urls.py
    urlpatterns = patterns('',
      (r'',include('dealerpanel.urls')),
      (r'^admin/', include(admin.site.urls))
    )
    

    将包含dealerpanel.urls 的前缀更改为空字符串。我认为您构建它的方式实际上是在寻找如下网址:

    /login/login/
    /login/home/
    /home/login
    ...
    

    【讨论】:

      【解决方案2】:

      将这样的内容添加到您的dealerpanel/urls.py 中,以便http://localhost:8000/login/ 会出现dealerpanel.views.target_view 的视图:

      urlpatterns = patterns('dealerpanel.views',
        ...
        (r'','target_view'),
      )
      

      这意味着login(或home)之后的空字符串将匹配target_view

      【讨论】:

        猜你喜欢
        • 2013-08-07
        • 2021-11-15
        • 2011-11-03
        • 2013-09-19
        • 2016-04-13
        • 1970-01-01
        • 2021-08-24
        • 1970-01-01
        • 2021-08-22
        相关资源
        最近更新 更多