2

したがって、クエリから人の情報を取得し、その情報をページに返すビューがあります。

def film_chart_view(request, if_random = False):

また、人の情報をランダムに取得して上記のビューにリダイレクトするビューもあります。

def random_person(request):
         .
         .
      return HttpResponseRedirect(reverse('home.views.film_chart_view')+"?q="+get_person.short)

ただし、最初のビューで 2 番目のビューからのものかどうかを認識して、そうである場合は if_random パラメータを True に設定する必要がありますが、その方法が正確にはわかりません。

私のURL:

url(r'^film_chart_view/$', 'home.views.film_chart_view'),
url(r'^random/$', 'home.views.random_person'),
4

1 に答える 1

3

URL パラメーターとして if_random を渡す必要はありません。

def random_person(request):
    return HttpResponseRedirect(
        reverse('home.views.film_chart_view') + \
        "?q=" + get_person.short + \
        "&is_random=1"
    )

def film_chart_view(request):
    is_random = 'is_random 'in request.GET

ただし、url パラメーターを使用する場合、解決策はもう少し複雑になります。

ビュー関数に渡されるパラメーターは URL パターンから取得されます。最初にそれらを設定する必要があります。

is_random パラメータはオプションであるため、film_chart_view に対して 2 つの別々のパターンを記述することをお勧めします (実際には、これら 2 つのパターンをより複雑な正規表現 expr を使用して 1 つに組み合わせることができますが、読みやすさが重要です)。

URLconf:

url(r'^film_chart_view/$', 'home.views.film_chart_view', name ='film_chart_view'),
url(r'^film_chart_view/(?P<is_random>.*)/$', 'home.views.film_chart_view', name ='film_chart_view_random'),
url(r'^random/$', 'home.views.random_person'),


def random_person(request):
    return HttpResponseRedirect(
        reverse('home.views.film_chart_view', kwargs={'is_random': '1'}) + \
        "?q=" + get_person.short
    )

ビュー パラメーター (リクエストを除く) は常に文字列です。コード内で int/bool/... に変換する必要があります。

def film_chart_view(request, is_random=None):
    if is_random:
        ...
于 2013-10-24T02:54:36.673 に答える