Mat*_*kes 0 django url django-templates django-views
这部分代码的目的是在类似于下面显示的模板中显示所有加入组的请求:
Request 1 | Add | Delete
Request 2 | Add | Delete
Request 3 | Add | Delete
....
Run Code Online (Sandbox Code Playgroud)
我想做的是将“添加”和“删除”按钮 href 设置为视图中的一个函数。但是我想知道将 **kwarg 从模板传递到视图的正确方法是什么。否则,是否有更好的方法来实现这一目标?
{% for asking in requested %}
<a href={% url 'group_judge_request' group_profile.slug decision=0 %}>Cut {{ asking.user.username }}</a>
<a href={% url 'group_judge_request' group_profile.slug decision=1 %}>Keep {{ asking.user.username }}</a>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
url(r'^judge_request/(?P<gslug>[\w-]+)$',
group_judge_request,
kwargs={'decision':'decision'},
name='group_judge_request'),
Run Code Online (Sandbox Code Playgroud)
def group_judge_request(request, gslug, decision):
Run Code Online (Sandbox Code Playgroud)
def group_requested_invites(request, gslug):
....
requested = GroupRequestToJoin.objects.filter(group=group_profile.group, checked=False)
return render(request, "groups/group_requested_invites.html", {
'requested' : requested,
})
Run Code Online (Sandbox Code Playgroud)
错误:
Don't mix *args and **kwargs in call to reverse()!
Run Code Online (Sandbox Code Playgroud)
我认为您想使用 url 查询。所以你的网址如下:
<a href="{% url 'group_judge_request' group_profile.slug %}?decision=0">Cut {{asking.user.username }}</a>
Run Code Online (Sandbox Code Playgroud)
然后,您可以继续使用以下方法列出查询:
request.META['QUERY_STRING']
Run Code Online (Sandbox Code Playgroud)
小智 5
我认为没有办法使用内置的 url 模板标签从模板中传递这样的 *kwargs。
有两种方法可以做到这一点,一种是创建两个单独的 url 并将决定作为 kwarg 传递给视图:
网址.py
url(r'^judge_request_cut/(?P<gslug>[\w-]+)$',
group_judge_request,
kwargs={'decision': 0},
name='group_judge_request_cut'),
url(r'^judge_request_keep/(?P<gslug>[\w-]+)$',
group_judge_request,
kwargs={'decision': 1},
name='group_judge_request_keep'),
Run Code Online (Sandbox Code Playgroud)
模板
{% for asking in requested %}
<a href={% url 'group_judge_request_cut' group_profile.slug decision=0 %}>Cut {{ asking.user.username }}</a>
<a href={% url 'group_judge_request_keep' group_profile.slug decision=1 %}>Keep {{ asking.user.username }}</a>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
或者您可以将整数作为参数传递:
网址.py
url(r'^judge_request/(?P<gslug>[\w-]+)/(?P<decision>\d{1})$',
group_judge_request,
name='group_judge_request'),
Run Code Online (Sandbox Code Playgroud)
模板
{% for asking in requested %}
<a href={% url 'group_judge_request' group_profile.slug 0 %}>Cut {{ asking.user.username }}</a>
<a href={% url 'group_judge_request' group_profile.slug 1 %}>Keep {{ asking.user.username }}</a>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19477 次 |
| 最近记录: |