为了在我的一个模板中传递带有参数的函数,我使用了一个隐藏的输入,该输入重定向到函数所在的视图(该函数用于删除用户“关注”的用户)。由于 HttpResponseRedirect(reverse('myview', args=[a number])),此视图然后重定向到上一页。
问题是我重定向到的页面需要一个参数(一个数字)。我希望用户被重定向到他所在的确切页面。
这是我的模板:
<form method="post" action="{% url projet.views.remove_relationship %}">
{% csrf_token %}
<input type="hidden" name="remove_relationship" value="{{ user.id }}">
<input type="submit" value="delete" />
和观点:
def remove_relationship(request):
user = request.user
if request.method == 'POST':
user_id = request.POST['remove_relationship']
user_id= int(user_id)
user_name = User.objects.get(id=user_id)
user.userprofile.remove_relationship(person=user_name.userprofile, status=1)
return HttpResponseRedirect(reverse('myoriginalview', args=[A NUMBER]))
用户来自的页面类似于:www.mysite/myoriginalview/ANUMBER。我想将他重定向到这个确切的页面
在原始视图中,数字对应于对象 id。(匹配.id)。
所以我不想做的是获取我原始视图的 match.id,将它传递到我的视图 remove_relationship 以便在“args = [match.id]”中使用它。
那么如何从原始视图中获取此 ID 并将其传递到我的新视图中呢?
这是我尝试过的:
在我的models.py中:
@models.permalink
def get_absolute_url_remove_relationship(self):
return ('remove_relationship', (), {'dub_id': self.id})
在我的模板中使用它:
<form method="post" action="{{get_absolute_url_remove_relationship}}">
{% csrf_token %}
<input type="hidden" name="remove_relationship" value="{{ user.id }}">
<input type="submit" value="delete" />
在我看来:
def remove_relationship(request, match_id=None):
match_id= int(match_id)
user = request.user
if request.method == 'POST':
user_id = request.POST['remove_relationship']
user_id= int(user_id)
user_name = User.objects.get(id=user_id)
user.userprofile.remove_relationship(person=user_name.userprofile, status=1)
return HttpResponseRedirect(reverse('terrain', args=[match_id]))
我在我的 url.py 中进行了必要的修改
所以当用户点击“删除”按钮删除他关注的用户时,重定向效果很好,但用户并没有被删除。看起来该功能不再使用,而当我使用 {%url projet.views.remove_relationship %} 时,用户被删除,但没有重定向。
任何帮助都会非常受欢迎。
PS:这个问题出现在我之前提出的另一个问题之后(http://stackoverflow.com/questions/13233794/function-with-arguments-in-a-template-django)。为了更清楚,我打开了一个新主题。