【问题标题】:django template url from another app来自另一个应用程序的 django 模板 url
【发布时间】:2014-11-08 02:12:27
【问题描述】:

我必须错过一些愚蠢的东西。我在模板中有一个 {% url %} ,该操作来自另一个应用程序。它不起作用,但我不知道使用其他应用程序的视图功能是否有什么不同,或者我只是在做一些愚蠢的事情。

调用/模板/调用/file.html

    <form action="{% url 'upload_image' %}"></form>

图片/urls.py

from .views import PictureList, PictureCreate, PictureDetail, PictureUpdate, PictureDelete, upload_image

...
url(r'^upload_image/$', upload_image, name='upload_image'),
...

图片/view.py

def upload_image( request ):
    print 'IN IMAGE UPLOAD'
    print request

我得到的只是:

NoReverseMatch at /call/4/

Reverse for 'upload_image' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []

【问题讨论】:

  • 该文件是故意命名为url.py 还是拼写错误?
  • 这是一个错字...现在已修复
  • 如果改用命名空间版本{% url 'picture:upload_image' %} 会怎样?
  • 我试过 action="{% url 'picture:upload_image' %}"url(r'^upload_image/$', upload_image, namespace='picture', name='upload_image'), 但说图片不是注册的命名空间。 (我以前没有使用过命名空间。)
  • 哦,或者命名空间在项目 urls.py 列表中(而不是在图片/urls.py 中)

标签: django django-templates


【解决方案1】:

在来自不同应用程序的 URL 上调用 reverse() 时,您应该使用其“命名空间”版本,如下所示:

{% url 'app_name:app_url' %}

在您的具体情况下,这意味着:

{% url 'picture:upload_image' %}

【讨论】:

    猜你喜欢
    • 2011-06-02
    • 2013-10-01
    • 2018-03-24
    • 2019-07-10
    • 2010-11-10
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    相关资源
    最近更新 更多