如何在 django 中使用链接 <a href=''> 过滤数据库表?

Posted

技术标签:

【中文标题】如何在 django 中使用链接 <a href=\'\'> 过滤数据库表?【英文标题】:How to filter database table using link <a href=''> in django?如何在 django 中使用链接 <a href=''> 过滤数据库表? 【发布时间】:2021-05-15 06:18:18 【问题描述】:

当用户点击某个类别的链接时,我会尝试显示包含该类别帖子的页面

这是我的 urls.py 文件:

from django.urls import path
from .views import PostHomeView,PostDetail,NavFooter,PostPageView

urlpatterns = [
 path('navbar', NavFooter, name='Nav_Footer'),
 path('', PostHomeView.as_view(), name ='home'),
 path('PostDetail/<int:pk>', PostDetail.as_view(), name ='post_detail'),
 path('PostPage/', PostPageView, name ='post_page'),
 ]

这是我的 view.py 文件

from django.shortcuts import render
from django.http import HttpResponse
from django.views.generic import ListView,DetailView
from .models import Post, TaskCategory

  def NavFooter(request):
     return render(request,"nav_footer.html", )


 class PostHomeView(ListView):
     model = Post
     context_object_name = 'post'
     template_name = 'home.html'

     def get_queryset(self):
        return Post.objects.order_by('task_title')[:9]


 def PostPageView(reguest):
    posts = Post.objects.all()
    category = TaskCategory.objects.all()

    return render(reguest,'post_page.html','posts':posts,'category':category)



 class PostDetail(DetailView):
    model = Post
    template_name = 'post_detail.html'

这是 models.py 文件:

from django.contrib.auth.models import User
from django.db import models

class TaskCategory(models.Model):
   category_title = models.CharField(max_length=50)

   def __str__(self):
      return self.category_title

class Post(models.Model):
   task_category = models.ForeignKey(TaskCategory, on_delete=models.CASCADE)
   recommended_tools = models.CharField(max_length=250)
   budget = models.CharField(max_length=250)

   def __str__(self):
       return self.task_title + ' | ' + self.task_discription + ' | ' + str(self.task_category) + ' | 
              ' + self.recommended_tools + ' | ' + self.budget

通过 html 访问此文件的最快方式

【问题讨论】:

借助类别字段 【参考方案1】:

首先为category_detail添加另一个url路由

path('CategoryDetail/<int:pk>', CategoryDetail.as_view(), name ='category_detail'),

接下来,为这条路线添加一个视图

class CategoryDetail(DetailView):
    model = TaskCategory
    template_name = 'category_detail.html'

category_detail.html 中,您可以使用类似这样的方式来显示帖子:

<ul>
    % for post in object.post_set.all %
        <li> post.id </li>
    % endfor %
</ul>

【讨论】:

以上是关于如何在 django 中使用链接 <a href=''> 过滤数据库表?的主要内容,如果未能解决你的问题,请参考以下文章

django 1.10循环每4个元素添加hr标签

如何更改 <hr> 标签的粗细

如何在 Django 模板中集中 URL?

如何在每两个兄弟 <hr> 标签之间抓取内容?

Django入门全套(第三部)

在django消息中放置一个<a>超链接[重复]