如何使用Django{%block%}打开同一页中单击的链接

2024-05-12 20:21:03 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的项目.html第-enter image description here

这里侧边栏中的列表来自数据库,其中包含项目分支,例如IT和项目子分支,例如网站设计和应用程序设计。我想要的是,当我单击所需的子分支时,所有具有该子分支的项目都会显示在侧边栏的右侧(其中proj1和proj2存在)。所以请大家告诉我什么是最佳解决方案那。目前我在想办法-

  1. 使用{%block%}并扩展概念。在
  2. 生成单独的.html文件并从视图.py所以内容可以相应地改变。在

其实我真的不知道怎么做才是正确的,也不知道怎么去实施这个。可以有人请帮帮我。在

我的模态.py文件是-

class branch(models.Model):
    branch_title = models.CharField(max_length=50)

class subbranch(models.Model):
    parentbranch = models.ForeignKey(branch)
    subbranch_title = models.CharField(max_length=50)

class project(models.Model):
    project_title = models.CharField(max_length=50)
    project_image = models.ImageField(upload_to="Images/Project")
    project_desc = models.TextField(max_length=5000)
    project_duration = models.CharField(max_length=50)
    project_branch = models.ForeignKey(branch)
    project_subbranch = models.ForeignKey(subbranch)

    def __unicode__(self):              
            return str(self.project_title)

我的项目.html文件是-

^{pr2}$

我的视图.py文件是-

def project_info(request):
    project_list = project.objects.all()
    branch_list = branch.objects.all()
    subbranch_list = subbranch.objects.all()
    context = {'branch_list':branch_list , 'subbranch_list':subbranch_list ,'project_list':project_list }
    return render(request, 'mutech/project.html', context)

Tags: 文件项目pyprojectbranchtitlemodelshtml
1条回答
网友
1楼 · 发布于 2024-05-12 20:21:03

这是一个更一般的webdev架构问题,而不是Django特有的问题,但我的看法是:

  • {% block %}用于构造模板层次结构,它与此处的问题没有多大关系。您的问题需要使用模板来实现,但也需要使用视图(可能还有模型)。在
  • 你的第二个解决方案更好。但您可以进一步概括:由于您要创建的页面与现有页面极为相似(一个页面只显示项目的一个子集,另一个显示所有项目),因此对两者使用相同的模板和视图可能更有意义。您只需要现有的视图(当前返回所有内容)接受可选参数以按类别过滤并适当地查询模型。没有参数,您将拥有一切,有了category_id参数,您将只能看到一个类别中的项目。尽可能少地使用重复代码,这一直是可取的。在
  • 为了获得更好的用户体验,使用AJAX视图实现这样的过滤也是很常见的。但是,如果您对Django、web应用程序体系结构和MTV/MVC模式感到更自在,您可能应该在以后采用这种方式。在

相关问题 更多 >