如何在 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=''> 过滤数据库表?的主要内容,如果未能解决你的问题,请参考以下文章