I'm trying to pass a value from my template file to a function in the views.py file in Django.
My project structure is as follows-
myproject/
manage.py
myproject/
__init__.py
urls.py
wsgi.py
views.py
settings.py
orders/
__init__.py
models.py
views.py
urls.py
tests.py
restaurant/
__init__.py
models.py
views.py
urls.py
tests.py
requirements.txt
Here's my templates/menu.html
file -
...
...
{% for id,image,menu in imageList %}
<div style = "display:inline-block">
<img src="{{ MEDIA_URL }}{{ image }}">
<p>{{ menu }}</p>
<a href="{% url 'addCart' id %}">+</a>
<a href="">-</a>
</div>
{% endfor %}
...
...
The orders/urls.py
is -
....
from orders.views import add_to_cart
urlpatterns = patterns('',
url(r'^add/(?P<product_id>\d+)$', add_to_cart, name ='addCart'),
)
And the root urls.py
is -
from orders.views import *
urlpatterns = patterns('',
url(r'^$', menu),
url(r'^admin/', include(admin.site.urls)),
url(r'^orders/', include('orders.urls', namespace = "addCart")),
)
And finally, the orders/views.py
is as follows-
def add_to_cart(request, product_id):
product = Inventory.objects.get(id=product_id)
....
On executing this, the homepage, which calls the menu.html
page gives the error-
Reverse for 'addCart' with arguments '(2,)' and keyword arguments '{}' not found. 0 pattern(s) tried: []
It says that the error is during the template rendering, specifically at the line -
<a href="{% url 'addCart' id %}">+</a>
I've tried a lot of different solutions, but nothing seems to work. I've tried using orders:addCart
in the tag, too. BUt it doesn't work. Is it because of the views that I'm importing from the orders
app is of the wrong format? Thank you.
Your url lives in the namespace 'addCart'
, so you'll have to specify that when reversing the url:
{% url 'addCart:addCart' id %}
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments