没有反向匹配错误.怎么调试?

Iam*_*1kc -2 django django-urls

我试图链接django这里的databrowse.admin小部件:

http://127.0.0.1:8000/admin/openmaps/open_layers/
Run Code Online (Sandbox Code Playgroud)

我试图把它放在一个模板中,它返回一个反向匹配错误.怎么调试?

<a href="{% url /admin/openmaps/open_layers/ %}">A</a>
Run Code Online (Sandbox Code Playgroud)

MrO*_*les 5

您尝试使用的URL标记在此处的Django文档中指定(对于版本1.4):

https://docs.djangoproject.com/en/1.3/ref/templates/builtins/#url

它的目的是将URL保留在链接DRY(不要重复自己)中,这样您就不必在开发,登台,生产或任何其他服务器环境之间更改链接URL.

所述url标记可视图中或作为其主要参数通过URL名字的图的参考,并且该视图取作为第二参数中的任何参数.从文档:

{% url path.to.some_view v1 v2 %}
Run Code Online (Sandbox Code Playgroud)

path包名称在哪里,to是模块名称,some_view是视图功能.v1并且v2是视图所采用的args.它在path/to.py中看起来像这样:

from django.http import HttpResponse

def some_view(request, v1, v2):
    return HttpResponse("A response")
Run Code Online (Sandbox Code Playgroud)

此外,在处理admin时,您需要使用adminURL命名空间策略来使用命名空间,如下所示:

{% url admin:view_name %}
Run Code Online (Sandbox Code Playgroud)

您需要做的是找到您要查找的视图的路径,并使用该路径创建URL.为了帮助您入门,您可以创建指向管理站点索引的链接,如下所示:

<a href="{% url admin:index %}">My Admin Site</a>
Run Code Online (Sandbox Code Playgroud)

这些将分别为管理员注销,密码更改表单和应用程序列表创建链接:

<a href="{% url admin:logout %}">Admin Logout</a>
<a href="{% url admin:password_change %}">Change Password</a>
<a href="{% url admin:app_list %}">The Application List</a>
Run Code Online (Sandbox Code Playgroud)

对于管理员中特定模型的视图,django使用模型上的元数据来构建其URL名称.您可以对模型执行相同操作以链接到其管理页面,但是,您需要以编程方式构建其名称(除非您了解它们).因此,如果您有一个名为的模型Foo,您可以通过构建其视图名称并使用reverse它们上的方法分别链接到其更改列表视图,添加视图和删除视图中的视图:

在你看来:

from django.core.urlresolvers import reverse

#...some view code...
#Get an instance of the model
bar = Foo.objects.all()[0]
prefix = "%s_%s_" % (Foo._meta.app_label, Foo._meta.module_name)
changelist_name = "%schangelist" % prefix
add_name = "%sadd" % prefix
delete_name = "%sdelete" % prefix

changelist_url = reverse(changelist_name)
add_url = reverse(add_name)
delete_url = reverse(delete_name, args=(bar.pk,)) #You need the id of the model you want to delete as an argument.

#...some more view code...
Run Code Online (Sandbox Code Playgroud)

在您的模板中

<a href="{{ changelist_url }}">The Foo ChangeList</a>
<a href="{{ add_url }}">Add a Foo</a>
<a href="{{ delete_url }}">Delete {{ bar.name }}</a>
Run Code Online (Sandbox Code Playgroud)

您可能需要深入研究django或您正在使用的任何特定扩展的内容,以获取您想要的确切网址名称.如果您可以提供有关您尝试在管理员中访问的模型的更多详细信息,我可以提供更具体的答案.