【问题标题】:The href in template and the Url are not working in Django模板中的 href 和 Url 在 Django 中不起作用
【发布时间】:2021-02-05 23:35:15
【问题描述】:

我是 django 的新手。我已经制作了一个可点击的表格单元格,但是当我点击该单元格时,什么也没有发生。

template

 {% for each in object_list %}
   <tr>                  
   <td id="{{ each.id }}"   data-href="http://127.0.0.1:8000/{{ each.region }}/{{ each.id }}"></td>
   </tr>
 {% endfor %}

需要view的一部分:

class MeterDetailView(DetailView):
       model = Meter
       template_name = 'meter/specificMeter.html'

       def get_context_data(self, **kwargs):
          pk = kwargs.get('pk',None)
          obj = Meter.objects.get(pk=pk)

url

    path('<int:region>/<int:pk>/', views.MeterDetailView.as_view(), name='detail')

model

class Meter(models.Model):
   region   = models.PositiveSmallIntegerField()
   UserId   = models.BigIntegerField(default=0,null=False)

怎么了?谢谢大家。

【问题讨论】:

  • 什么是each?能提供对应的型号吗?
  • 顺便问一下,您是否包含data-href 的javascript?看起来这是建立在 jQuery 之上的东西:stackoverflow.com/a/17147973/67579
  • 我添加了我的模型。我没有为 href 包含 js。@WillemVanOnsem
  • 那么这将不起作用,因为data-href 本身并不能使该列成为链接。 JavaScript 基本上会通过操作 DOM 将行中的单元格变成可点击的项目。

标签: javascript html url onclick href


【解决方案1】:

要使单击后重定向的单元格可以使用onclick 属性。在您的情况下,我们将不得不稍微更改代码:

 {% for each in object_list %}
   <tr>                  
       <td id="{{ each.id }}" onclick="window.location='http://127.0.0.1:8000/{{ each.region }}/{{ each.id}}'"></td>
   </tr>
 {% endfor %}

类似的方法可以在this问题中找到

【讨论】:

  • 如果对您有帮助,请点赞答案,以便其他人在遇到类似问题时将其视为有效的解决方案:)
【解决方案2】:

就像在您的问题下的 cmets 中已经解释的那样,data-href 只是dataset HTML 属性的一个变体。你可以在这里阅读更多内容:dataset

最简单的方法:将所有单元格数据插入&lt;a href="link"&gt;&lt;/a&gt; 标签内。 This question's选择的答案可以告诉你更多。

也可以通过在代码中添加onclick 事件来处理data-href

<td id="{{ each.id }}" data-href="{% url 'detail' each.region each.id %}" onclick="makeCellClickable()" class="some-class></td>

请注意,我已将 url 标记而不是直接链接作为 data-href。

除此之外,您需要在链接的js文件或&lt;script&gt;&lt;/script&gt;标签内的html文件中指定makeCellClickable()函数。不要忘记在样式表中添加像 some-class 这样的类,它会改变背景、光标或者您希望向用户显示单元格是可点击的。

function makeCellClickable() {
    window.location = this.event.target.dataset.href
}

【讨论】:

    【解决方案3】:

    如果你想指定 url,你应该使用如下:

    urls.py

    urlpatterns = [ 
    path('admin/', admin.site.urls),
    path('',YourView, name='UseForSpecifyUrl'),]
    

    .html

    <div class="col-6 text-right">
    <a href="{% url 'UseForSpecifyUrl' %}" class="text-primary"><small>Do something</small></a>
    </div>
    

    【讨论】:

      猜你喜欢
      • 2012-10-10
      • 2011-04-28
      • 1970-01-01
      • 2018-02-26
      • 2015-06-20
      • 2021-11-08
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多