【问题标题】:Django, how to create a path: <model_id>/<model_id>/templateDjango,如何创建路径:<model_id>/<model_id>/template
【发布时间】:2022-10-23 19:14:05
【问题描述】:

这个问题的背景是因为我正在尝试找到一种方法来构建具有 2 种不同用户类型的双面界面。

  1. 用户类型 1 将能够定义用户类型 2 执行的某些操作
  2. 用户类型 2 将有权访问用户类型 1 提供的任务。但是,所有用户类型 2 将无法访问所有任务。用户类型 2 A 可能具有与用户类型 2 B 不同的操作。

    通过设置路径&lt;model_id&gt;/&lt;model_id&gt;/template,我认为这将是提供清晰的 url 路径并过滤对数据的访问的好方法。

    以一个名为 Project 的模型为例,在寻找链接到单个 pk_id 时,我通常会执行以下操作:

    #views.py
    def show_project(request, project_id):
        projects = Project.objects.get(pk=project_id)
        return render(request, 'main/show_project.html',{'projects':projects}) 
    
    #url.py
    path('show_project/<project_id>',views.show_project,name="show-project"),
    
    #template.py (referrer)
    <a class="btn btn-outline-secondary" href="{% url 'show-project' project.id %}">{{project}}</a>
    

    这样做可以让我根据模型的 ID 过滤我想要显示的内容。

    我想我可以通过添加另一层&lt;model_id&gt;/&lt;model_id&gt;/template 来做类似的事情。

    坚持上面的例子:&lt;user_id&gt;/&lt;project_id&gt;/template

    所以我想出了以下内容,这显然不起作用。

    意见

    def function(request, user_id, project_id):
        user = User.objects.get(pk=user_id)
        project = Project.objects.get(pk=project_id)
        return render(request, 'main/test_url.html',{'project':projects, 'users':user}) 
    

    网址

    path('<user_id>/<project_id>/test_url',views.test_url,name="test-url"),
    

    模板(推荐人)

    <a class="btn btn-outline-danger " href="{% url 'test-url' user.id project.id %}">See Test URL</a>
    

【问题讨论】:

  • Django 显示的错误是什么?

标签: django django-views django-templates django-urls


【解决方案1】:

1.第一个错误是将项目传递给 'project':projects 字典。应该是项目('项目':项目)。

def function(request, user_id, project_id):
    user = User.objects.get(pk=user_id)
    project = Bb.objects.get(pk=project_id)

    return render(request, 'main/cart_page.html',{'project':project, 'users':user})
  1. 路径中没有尾部斜杠。您将模板传递给视图,而不是函数,但您需要一个视图函数。它应该是这样的: 网址.py

    网址模式 = [ path('<user_id>/<project_id>/test_url/', views.function, name='test-url'), ]

模板

<p>{{ project }}</p>
<p>{{ users }}</p>

<a href="{% url 'test-url' users.id project.id %}">Refresh the page</a>

地址:http://localhost:8000/1/1/test_url/

【讨论】:

    猜你喜欢
    • 2022-08-09
    • 2019-06-02
    • 2018-10-01
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多