【发布时间】:2015-11-23 21:03:03
【问题描述】:
我在 Django 1.8 中使用命名空间 URL 和两个应用程序。请参阅下面的简约结构:
购物车
- 模板
- -购物车
- - -cart-template.html
- urls.py
- views.py
商店
- 设置.py
- urls.py
产品
- 模板
- -购物车
- - -cart-template.html
- urls.py
-views.py
所以我为“主”应用设置了路线:
#Shop/urls.py
urlpatterns = patterns(
'',
url(r'^cart/', include('cart.urls', namespace='cart')),
)
和购物车应用程序
#Cart/urls.py
urlpatterns = [
url(r'^$', views.index, name='index'),
]
这个模板标签工作得很好:
# Cart/templates/cart/cart-template.html
<form action= {% url 'cart:index' %} method="post">
但是,当我在产品页面上(由产品应用程序处理)并单击应该以完全相同的方式重定向我的按钮时,它会给出 404:
# Product/templates/product/product-template.html
<form action= {% url 'cart:index' %} method="post">
换句话说,我不能在另一个应用程序 Product 的模板中使用购物车应用程序的命名空间 url。我怎样才能使这成为可能/我做错了什么?这是我的输出:
Page not found (404)
Request Method: GET
Request URL: http://0.0.0.0:8000/cart/cart.views.index
似乎尝试使用应该调用的视图作为 URL。
编辑:似乎在隐藏字段中添加名称属性时发生错误:
<!-- Product/templates/product/product-template.html -->
<form action= {% url 'cart:index' %} method="post">
{% csrf_token %}
<!-- this link works -->
<a href={% url 'cart:index'%}> Click</a>
<!-- Submit button goes to correct URL when name attribute of hidden field below is commented out, but I need it to know what to put in cart -->
<input type="hidden" name="id" value="{{ article.id }}">
<input type="submit" value="Bestellen" class="btn btn-default"/>
</form>
当隐藏输入字段的名称属性被删除时,我收到以下错误:
MultiValueDictKeyError at /cart/
"'id'"
【问题讨论】:
-
命名空间网址应该可以工作,无论它们在哪个应用程序中。您可以尝试创建一个指向索引页面(相对于表单)的简单链接,以检查您的问题是否在其他地方?
-
是的,我刚刚尝试了一个简单的链接: Link ,它就像一个魅力。添加此行时会出现问题: input type="hidden" name="id" value="{{ article.id }}"> 我需要知道要放入购物车的内容。更新问题
-
嗯,试着把
""放在{% url 'cart:index' %}周围。所以这意味着:<form action="{% url 'cart:index' %}" method="post"> -
不走运,完全相同的行为。
-
另一个可能的问题是
cart/urls.py,你有一个列表而不是patterns。所以尝试将以下内容放入cart/urls.py:urlpatterns = patterns('', url(r'^$', views.index, name='index'))
标签: python django django-templates