开发者社区> 问答> 正文

没有找到参数的“product”的反转。1模式(s)尝试:[u 'products / (? P <

我试图链接到Django管理中的一个页面;我用蛞蝓场来做这个。我创建了一个基本的URL在主要的' URL。包含名称空间的文件。然后我在url .py文件中声明了我的产品url,该文件指向我的模板和视图。

{% for item in products %}
<div class="col-sm-12 col-md-4 col-lg-4">
  <div class="box">
    {% if item.image_one %}
    <div class="image">
      <img src="{{ item.image_one.url }}" alt="{{ item.name }}">
    </div>
    {% endif %}
    <div class="content">
      <h4>{{ item.name }}</h4>
      <a href="{% url 'products:product' item.slug %}" class="button">View Product</a>
    </div>
  </div>
</div>
{% endfor %}
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^(?P<product>[-\w]+)/$', views.product, name='product'),]
def product(request, product):

    product = get_object_or_404(Product, slug=product)

    return render(request, 'products/product.html',{
        'product':product,
})


 def index(request):

     products = Product.objects.all()

     return render(request, 'products/index.html',{
         'products': products,
})
<section id="products">
  <div class="container">
    <div class="row">   
      <div class="col-sm-12 col-md-4 col-lg-4">
        <div class="box">
          <div class="image">
            <img src="/media/temp-image.png" alt="product name">
          </div>
          <div class="content">
            <h4>product name</h4>
            <a href="/products/product-name/" class="button">View Product</a>
          </div>
        </div>
      </div>

      <div class="col-sm-12 col-md-4 col-lg-4">
        <div class="box">
          <div class="image">
            <img src="/media/temp-image_uQcyyVv.png" alt="Another product">
          </div>
          <div class="content">
            <h4>Another product</h4>
            <a href="/products/another-product/" class="button">View Product</a>
          </div>
        </div>
      </div>
    </div>
  </div>
</section>

问题来源StackOverflow 地址:/questions/59381964/reverse-for-product-with-no-arguments-not-found-1-patterns-tried-uproduc

展开
收起
kun坤 2019-12-27 17:22:21 417 0
1 条回答
写回答
取消 提交回答
  • 不清楚为什么url反向失败,但你不应该做什么,你正在做的与管理。相反,更改您的url .py不模拟管理员:

    url(r'^(?P<product>[-\w]+)/$', views.product, name='my-product-view')
    

    然后,在你的模板:

    <a href="{% url 'my-product-view' item.slug %}" class="button">View Product</a>
    

    如果这不起作用,确保你可以手动反转。获得Django shell:

    $ python manage.py shell
    

    然后尝试反向的url与id从你的一个对象:

    >>> from django.urlresolver import reverse
    >>> aproduct = Product.objects.first()
    >>> reverse('my-product-view', args=(aproduct.slug,))
    

    上面我在shell中所做的事情或多或少与您的{% url %}标记在幕后所发生的事情有关,因此这将使我们对问题所在有一定的了解。 如果这不起作用,你的设置就有问题了。确认您的INSTALLED_APPS包含这个url .py所在的应用程序。 最后,您看到的错误似乎表明您在某个产品上遗漏了一个关键字(“没有参数的产品反向…”)。通过在shell中迭代您的产品来确认情况不是这样的:

    >>> for p in Products.objects.all():
    >>>     if not p.slug: 
    >>>         print(p)
    
    2019-12-27 17:22:28
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载