问题
I have to be missing something silly. I have a {% url %} in a template where the action is from another app. It isn't working but I have no clue if there is something different about using view functions from other apps or if I am just doing something silly.
call/template/call/file.html
<form action="{% url 'upload_image' %}"></form>
picture/urls.py
from .views import PictureList, PictureCreate, PictureDetail, PictureUpdate, PictureDelete, upload_image
...
url(r'^upload_image/$', upload_image, name='upload_image'),
...
picture/view.py
def upload_image( request ):
print 'IN IMAGE UPLOAD'
print request
All I ever get is:
NoReverseMatch at /call/4/
Reverse for 'upload_image' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
回答1:
When calling reverse()
on an URL that comes from a different application, you should use its "namespaced" version, like so:
{% url 'app_name:app_url' %}
In your specific case, that translates to:
{% url 'picture:upload_image' %}
来源:https://stackoverflow.com/questions/26812980/django-template-url-from-another-app