姜戈。无法获取绝对网址

问题描述 投票:0回答:1

我需要链接到 supplier_data 以获取已登录的供应商。无法用任何方法得到它。我得到空元素。 型号:

class Supplier(models.Model):
    id = models.IntegerField(primary_key=True)
    company_name = models.OneToOneField(User, max_length=120, on_delete=models.CASCADE)
    currency = models.CharField('Currency', max_length=4)
    legal_form = models.CharField('Legal form', max_length=100, choices=legal_form_options, default='Sole proprietorship')
    accounting_standards = models.CharField('Accounting standards', max_length=100)
    owner_structure = models.CharField('Owner structure', max_length=100)
    industry_sector = models.CharField('Industry sector', max_length=100, choices=industry_sector_options, default='Advertising')  
    date_of_establishment = models.DateField('Date of establishment', default=date.today)
    start_up = models.CharField('Start-up', choices=start_up_options, default='No', max_length=4)
    email_address = models.EmailField('Email address')
    web = models.URLField('Website address')

    def get_absolute_url(self):
        return reverse('supplier_data', args=[self.id])

景色:

def all_suppliers(request):
    supplier_list = Supplier.objects.all()
    return render(request, 'all_suppliers.html',{'supplier_list': supplier_list})

def supplier_data(request, id): 
    supplier_list = get_object_or_404(Supplier, pk=id)
    return render(request, 'all_suppliers.html',{'supplier_list': supplier_list})

网址:

    path('supplier_data/<int:id>', views.supplier_data, name="supplier_data"),

HTML:

        {% for supplier in supplier_list %}
        <a id=link href="{% url 'supplier_data' supplier.id %}">Supplier data</a>
        {%endfor%}

我花了大约一周的时间尝试使用 get_absolute_url 方法,但没有使用它……很多事情…… 感谢您看一看。

django django-urls
1个回答
1
投票

检查标签 {% endfor %} 中的空格并删除 id,因为它必须是唯一的,并且是像 id="link1" 这样的字符串,但在这里没有意义:

{% for supplier in supplier_list %}
    <a href="{% url 'supplier_data' supplier.id %}">Supplier data</a>
{% endfor %}

并确保 supplier_list 不为空(数据库中尚未创建对象),例如将其放在循环之前进行调试,如:

xxx{{supplier_list}}xxx
{% for .... %}

xxx 只是为了使空字符串可见。

如果您出于某种原因需要一个唯一的 id,您可以使用 forloop 计数器创建它:

id = "link{{forloop.counter}}"

{{template_variable}} 中没有空格!

© www.soinside.com 2019 - 2024. All rights reserved.