问答中心分类: PYTHON如何将 url 参数添加到 Django 模板 url 标签?
0
匿名用户 提问 32分钟 前

在我看来,要获得这样的 url 参数:

date=request.GET.get('date','')

在我的 url 中,我尝试使用 url 模板标签以这种方式传递参数,如下所示:

Add To Log

后面的参数?显然不起作用,我怎样才能传递这个数据值以便用 get 检索?

Nagkumar Arkalgud 回复 32分钟 前

检查这个关联.

Nagkumar Arkalgud 回复 32分钟 前

考虑这一点时,请务必区分“Django url 参数”和“url 查询参数”。 Django url 参数配置在urls.py使用path()例如path('client/<int:id>/'). URL查询参数是url后面的部分?例如https://example.com/a/b/?param1=value1&param2=value2.这个问题是关于 url 查询参数的,但有些答案是指 Django url 参数。

Nagkumar Arkalgud 回复 32分钟 前

这个答案一个简单的自定义模板标签来呈现 url 查询字符串。

5 Answers
0
andergmartins 回答 32分钟 前

首先,您需要准备好您的网址以接受正则表达式中的参数:(urls.py)

url(r'^panel/person/(?P<person_id>[0-9]+)$', 'apps.panel.views.person_form', name='panel_person_form'),

所以你在你的模板中使用它:

{% url 'panel_person_form' person_id=item.id %}

如果您有多个参数,您可以更改您的正则表达式并使用以下内容修改模板:

{% url 'panel_person_form' person_id=item.id group_id=3 %}
Cyd 回复 32分钟 前

@MehranNouri 使用 request.GET 而不是 request.get

teebagz 回复 32分钟 前

无论如何通过从上下文传递字典来传递动态数量的kwargs?例如{% url target_link target_kwargs %}这就像通过**kwargs到一个函数。我有一个用例target_link是可变的,因此不知道 url 中的 kwarg 数量

BjornW 回复 32分钟 前

请注意,这些不是查询参数,这个答案是描述 django url 参数。这不是 OP 所问的(尽管答案确实描述了一个可行的替代解决方案)。

0
Mr Singh 回答 32分钟 前

只需添加模板 URL:

<a href="{% url 'service_data' d.id %}">
 ...XYZ
</a>

在 django 2.0 中使用

Bernardo Duarte 回复 32分钟 前

@ScottSkiles然后您应该将问题编辑为特定版本的Django,然后添加另一个以涵盖更新的版本。有人会说这是重复,但我不同意。一个问题中有多个版本可能会产生误导。

0
Neeraj Singh Chouhan 回答 32分钟 前

这可以通过三个简单的步骤完成:
1)添加项目IDurl标签:

{% for item in post %}
<tr>
  <th>{{ item.id }}</th>
  <td>{{ item.title }}</td>
  <td>{{ item.body }}</td>
  <td>
    <a href={% url 'edit' id=item.id %}>Edit</a>
    <a href={% url 'delete' id=item.id %}>Delete</a>
  </td>
</tr>
{% endfor %}

2)添加路径到网址.py

path('edit/<int:id>', views.edit, name='edit')
path('delete/<int:id>', views.delete, name='delete')

3)使用 id视图.py

def delete(request, id):
    obj = post.objects.get(id=id)
    obj.delete()

    return redirect('dashboard')
Vaibhav Vishal 回复 32分钟 前

键入您的代码而不是添加屏幕截图以避免投票。

Igor Voltaic 回复 32分钟 前

我在 Django 文档中寻找的确切内容。

Behrouz Beheshti 回复 32分钟 前

我认为您需要为您的 href 添加双引号。

0
Guillaume Lebreton 回答 32分钟 前

我不确定我是否超出了主题,但我为我找到了解决方案;您有一个基于类的视图,并且您希望将 get 参数作为模板标记:

class MyView(DetailView):
    model = MyModel

    def get_context_data(self, **kwargs):
        ctx = super().get_context_data(**kwargs)
        ctx['tag_name'] = self.request.GET.get('get_parameter_name', None)
        return ctx

然后你提出你的获取请求/mysite/urlname?get_parameter_name='stuff.
在您的模板中,当您插入{{ tag_name }},您将可以访问获取参数值(’stuff’)。如果您的模板中有一个 url 也需要此参数,您可以这样做

{% url 'my_url' %}?get_parameter_name={{ tag_name }}"

您不必修改您的 url 配置

0
Cyd 回答 32分钟 前

1:HTML

<tbody>
            {% for ticket in tickets %}
              <tr>
                <td class="ticket_id">{{ticket.id}}</td>
                <td class="ticket_eam">{{ticket.eam}}</td>
                <td class="ticket_subject">{{ticket.subject}}</td>
                <td>{{ticket.zone}}</td>
                <td>{{ticket.plaza}}</td>
                <td>{{ticket.lane}}</td>
                <td>{{ticket.uptime}}</td>
                <td>{{ticket.downtime}}</td>
                <td><a href="{% url 'ticket_details' ticket_id=ticket.id %}"><button data-toggle="modal" data-target="#modaldemo3" class="value-modal"><i class="icon ion-edit"></a></i></button> <button><i class="fa fa-eye-slash"></i></button>
              </tr>
            {% endfor %}
            </tbody>

{% url ‘ticket_details’ %} 是您视图中的函数名称
2:视图.py

def ticket_details(request, ticket_id):

   print(ticket_id)
   return render(request, ticket.html)

ticket_id 是您将从 ticket_id=ticket.id 获得的参数
3:网址.py

urlpatterns = [
path('ticket_details/?P<int:ticket_id>/', views.ticket_details, name="ticket_details") ]

/?P – 其中ticket_id 是组的名称,pattern 是要匹配的某种模式。