无法在Django的URL.conf中匹配URL?

1 投票
2 回答
3412 浏览
提问于 2025-04-16 23:34

我哪里做错了?

我的网址是: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')
)

2 个回答

0

在你的 dealerpanel/urls.py 文件中添加类似下面的内容,这样当你访问 http://localhost:8000/login/ 时,就会触发 dealerpanel.views.target_view 这个视图:

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

这意味着在 login(或者 home)后面什么都不写,就会匹配到 target_view

4
## urls.py
urlpatterns = patterns('',
  (r'',include('dealerpanel.urls')),
  (r'^admin/', include(admin.site.urls))
)

把包含 dealerpanel.urls 的前缀改成空字符串。我觉得你现在的结构会让它去找一个像这样的网址:

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

撰写回答