0
私urls.pyはエントリーがあります。私は値を取得しようとしているジャンゴ:クラスベースビューのURL変数にアクセス
class ResultsView(TemplateView):
template_name = os.path.join(APPNAME, "results.html")
def dispatch(self, request, *args, **kwargs):
query = kwargs['query']
print("HERE: " + str(json.dumps(kwargs, indent=1)))
print(self.kwargs['query'])
print(self.kwargs.get('query'))
print(kwargs['query'])
print(kwargs.get('query'))
if query is None:
return redirect('/')
return super(ResultsView, self).dispatch(request, *args, **kwargs)
def get_context_data(self, **kwargs):
context = super(ResultsView, self).get_context_data(**kwargs)
print("HERE: " + str(json.dumps(kwargs, indent=1)))
print(self.kwargs['query'])
print(self.kwargs.get('query'))
print(kwargs['query'])
print(kwargs.get('query'))
...
# This is just here to test if 'query' is set
def get(self, request, query):
print(query)
:
urlpatterns = [
url(r'^results/(?P<query>).+', views.ResultsView.as_view(), name="results"),
]
対応するクラスベースビューと一致urls.pyに設定されているquery
変数の値。しかし、私が他のSOの投稿で見つけたさまざまな解決策を試した後(すべての印刷文からわかるように)、何も動いていません。
リクエストが正しいページ(results /)に解決されますが、dictのクエリエントリを印刷しようとすると空文字列が返され、json.dumps(kwargs, indent=1))
の出力があるため、urls.pyが適切に設定されていると確信しています。これは
HERE: {
"query": ""
}
私は間違っていますか?
実際のURLを表示できますか?あなたが渡しているクエリのように – Exprator
確かに、ローカルでは、クエリを持つURLは次のようになります: 'http://127.0.0.1:8000/results/australia'ここで' australia'はユーザが設定したクエリ用語です検索バー。 – Sam
あなたは間違いを犯しています。検索語はURLに追加され、そのようなものではありません。http://127.0.0.1:8000/results/?q=australiaあなたはビューでそのパラメータの部分を必要としないでください、request.GET.get( 'q')とあなたは検索用語を取得し、URLからパラメータを削除することを忘れないでください – Exprator