0

いくつかの引数をキャプチャするURLがあるとしましょう。例えば:

url(r'^(?P<l_slug>[-\w]+)/(?P<t_slug>[-\w]+)/(?P<event_id>\d+)/$', 'views.SomeView'),

また、場合によっては、SomeViewに必要な引数は次の1つだけです。例:

def SomeView(request, event_id):
    return HttpResponse('hi {}'.format(event_id))

私がこの問題を処理してきた方法は次のとおりです。

def SomeView(request, l_slug=None, t_slug=None, event_id=None):
    return HttpResponse('hi {}'.format(event_id))

URL行からビューに渡される引数を制限するものはありますか?

4

1 に答える 1

3

唯一の制限は、ブラウザによって異なるクエリ文字列の長さです(私が知る限り)。詳細については、このStackOverflowの質問を参照してください。

URLを読みやすくする、または必要な引数のみを抽出する限り、それは少し主観的です。

URLを明示的にしたい場合は、名前付きパラメーターを渡すことで、実行していることを続行できますが、メソッドのシグネチャを次のように変更することもできます。

def some_view(request, *args, **kwargs):
    # more code here

次に、必要なargまたはkwargを取得し、None存在しない場合は返します。

クエリ文字列パラメータと同じ値を渡すこともできます。そうすれば、ビューでargsやkwargsを定義する必要はまったくなく、request.GET辞書から値を取得するNoneか、キーが見つからない場合は戻るだけです。

ですから、何がより読みやすいかはあなた次第です。

于 2013-02-27T18:55:03.293 に答える