0

テンプレートの 1 つに引数を指定して関数を渡すために、関数があるビューにリダイレクトする非表示の入力を使用しました (関数は、ユーザーが「フォローしている」ユーザーを削除するために使用されます)。このビューは、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 に対応します。(match.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)。より明確にするために、新しいトピックを開きました。

4

1 に答える 1

0

の呼び出し中にargsas aを渡す必要があります。また、アプリ名を含むビューの完全修飾名を使用していることを確認してください。tuplereverse

return HttpResponseRedirect(reverse('appname.views.viewname', args=(match_id,)))

参照

于 2012-11-05T17:19:52.543 に答える