パーマリンクを使用しているときに get 変数を URL に追加する方法はありますか?
つまり www.example.com/1999/news/ ?filter=entertainment
パーマリンクを使用しているときに get 変数を URL に追加する方法はありますか?
つまり www.example.com/1999/news/ ?filter=entertainment
IMHO Permalink にはクエリ パラメータを含めないでください。正しく聞こえません。
get_absolute_url()
とはいえ、モデルのメソッドから指定した URL のような URL を返すには、非常に下品で Django に似ていない方法があります。
手順
最初に、ダミー URL と対応する何もしないビューを追加します。例えば
# models.py
class MyModel(models.Model):
...
@models.permalink
def get_absolute_url(self):
return ('dummy_url', [str(self.id), self.filter])
# urls.py
url(r'^news/(?P<model_id>\d+)/\?category=(?P<category>\w+)$',
'dummy_url', {}, name = 'dummy_url'),
# views.py
def dummy_url(request, *args, **kwargs):
pass
このダミーは、URLを生成するためだけに使用されます。つまり、 を実行すると正しい URL が得られますinstance.get_absolute_url()
。
URL が呼び出されたときにインスタンス ページを実際に表示するには、別の適切なURL 構成と一致するビューを追加する必要があります。このようなもの。
# urls.py
url(r'^news/(?P<model_id>\d+)/$',
'correct_view', {}, name = 'correct_view'),
# views.py
def correct_view(request, *args, **kwargs):
# do the required stuff.
ただし、からパラメーターcorrect_view
を抽出する必要があります。GET
request
ダミーの URL 構成と適切な URL 構成がいかに似ているかに注目してください。ダミーでは、クエリ パラメータのみが余分です。