【问题标题】: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 访问此文件的最快方式

【问题讨论】:

  • 借助类别字段

标签: html django django-models django-views django-urls


【解决方案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>

【讨论】:

    猜你喜欢
    • 2011-08-04
    • 2017-04-05
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    • 2013-08-19
    相关资源
    最近更新 更多