【问题标题】:NoReverseMatch in Django with namespaceDjango中的NoReverseMatch与命名空间
【发布时间】:2015-05-26 19:38:24
【问题描述】:

如果不抛出 NoReverseMatch,我无法在 Django 中进行反向操作,即使如果不进行反向操作,页面也会加载。 以下是相关代码:

main/urls.py

from django.conf.urls import patterns, include, url
urlpatterns = patterns('',
    url(r'(^$)|(^admin/)',include('example_admin.urls',namespace='example_admin')),
)

example_admin/urls.py

from django.conf.urls import patterns, include, url
from example_admin import views
urlpatterns = patterns('',
    url(r'^$', views.index, name='index'),
)

example_admin/views.py

from django.shortcuts import render
def index(request):
    context = {}
    return render(request, 'example_admin/index.hmtl', context)

一切正常,直到我把这一行放在我的 index.html 模板中

<a href="{% url 'example_admin:index' %}">LNK</a>

我收到此错误: Reverse for 'index' with arguments '()' and keyword arguments '{}' not found. 1 pattern(s) tried: [u'(^$)|(^admin/)$']

我也在 django shell 中尝试过,使用 reverse('index') 和 reverse('example_admin:index') 都没有为我工作。

【问题讨论】:

  • 从 shell 我运行了 resolve('/admin/') 并得到了 ResolverMatch(func=, args=(), kwargs={}, url_name='index' , app_name='None', namespace='example_admin')

标签: python django django-urls


【解决方案1】:

我通过将 main/urls.py 中的链接更改为

url(r'(^$)|(^admin/)',include('example_admin.urls',namespace='example_admin')),

url(r'^admin/',include('example_admin.urls',namespace='example_admin')),
url(r'^$',include('example_admin.urls',namespace='example_admin')),

我猜它真的不喜欢我的正则表达式 OR 语句,有人知道为什么吗?

【讨论】:

猜你喜欢
  • 2014-09-18
  • 2018-02-21
  • 1970-01-01
  • 1970-01-01
  • 2019-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-02
相关资源
最近更新 更多