2017-06-30 13 views
1

私は検索機能を持っており、検索結果をCSV形式でエクスポートすることもできます。私の検索機能は正常に動作します。しかし、エクスポート機能は、ユーザーが行った検索結果を収集することができません。私はこの問題の背後にある理由を理解することができますが、それに対処する方法を見つけることができません。 (グローバル変数の使用法は役に立つかもしれませんが、私はそれを使用したくない) マイ検索クエリ機能:CSVにエクスポートされた検索結果を取得する - django

def search_query(request): 
    result = publication.objects.all() 
    query = request.GET.get("query") 
    if query: 
     result = result.filter(
      Q(title__icontains=query) 
      Q(timeStamp__icontains=query) 
     ).distinct() 
    user_filter = UserFilter(request.GET, queryset=result) 

    return user_filter 

マイサーチ機能:

def search(request): 
    title = "Advanced Search" 
    user_filter = search_query(request) 
    context = { 
     'title': title, 
     'filter': user_filter, 
    } 
    return render(request, "search.html", context) 

私のエクスポート機能:

def export_search_csv(request): 
    data = search_query(request) 
    response = HttpResponse(content_type='text/csv') 
    response['Content-Disposition'] = 'attachment;filename=publications.csv' 
    writer = csv.writer(response) 
    writer.writerow(['Title', 'Published On']) 
    for item in data.qs: 
     writer.writerow([item.title, item.timeStamp.strftime("%b-%Y")]) 
    return response 

UPD:

H TML(輸出部):

<p> 
    <h5> 
    <a href="{% url 'publication:export_search_csv' %}?{{ request.GET.urlencode }}" class="btn btn-default" style="width: 150px; role="button"> 
     <span class="glyphicon glyphicon-save"> </span> Export to CSV</a>  
    </h5> 
    </p> 

メインurls.py:

urlpatterns = [ 
    url(r'^', include('publications.urls', namespace='publication')), 
    ] 

出版/ urls.py:

urlpatterns = [ 
    url(r'^export/csv/$', views.export_search_csv, name='export_search_csv'), 
] 

助けてください。

トレースバック(最新の呼び出しの最後):

File "/usr/local/lib/python2.7/dist-packages/Django-1.11-py2.7.egg/django/core/handlers/exception.py", line 41, in inner 
    response = get_response(request) 
    File "/usr/local/lib/python2.7/dist-packages/Django-1.11-py2.7.egg/django/core/handlers/base.py", line 217, in _get_response 
    response = self.process_exception_by_middleware(e, request) 
    File "/usr/local/lib/python2.7/dist-packages/Django-1.11-py2.7.egg/django/core/handlers/base.py", line 215, in _get_response 
    response = response.render() 
    File "/usr/local/lib/python2.7/dist-packages/Django-1.11-py2.7.egg/django/template/response.py", line 107, in render 
    self.content = self.rendered_content 
    File "/usr/local/lib/python2.7/dist-packages/Django-1.11-py2.7.egg/django/template/response.py", line 84, in rendered_content 
    content = template.render(context, self._request) 
    File "/usr/local/lib/python2.7/dist-packages/Django-1.11-py2.7.egg/django/template/backends/django.py", line 66, in render 
    return self.template.render(context) 
    File "/usr/local/lib/python2.7/dist-packages/Django-1.11-py2.7.egg/django/template/base.py", line 207, in render 
    return self._render(context) 
    File "/usr/local/lib/python2.7/dist-packages/Django-1.11-py2.7.egg/django/template/base.py", line 199, in _render 
    return self.nodelist.render(context) 
    File "/usr/local/lib/python2.7/dist-packages/Django-1.11-py2.7.egg/django/template/base.py", line 990, in render 
    bit = node.render_annotated(context) 
    File "/usr/local/lib/python2.7/dist-packages/Django-1.11-py2.7.egg/django/template/base.py", line 957, in render_annotated 
    return self.render(context) 
    File "/usr/local/lib/python2.7/dist-packages/Django-1.11-py2.7.egg/django/template/loader_tags.py", line 177, in render 
    return compiled_parent._render(context) 
    File "/usr/local/lib/python2.7/dist-packages/Django-1.11-py2.7.egg/django/template/base.py", line 199, in _render 
    return self.nodelist.render(context) 
    File "/usr/local/lib/python2.7/dist-packages/Django-1.11-py2.7.egg/django/template/base.py", line 990, in render 
    bit = node.render_annotated(context) 
    File "/usr/local/lib/python2.7/dist-packages/Django-1.11-py2.7.egg/django/template/base.py", line 957, in render_annotated 
    return self.render(context) 
    File "/usr/local/lib/python2.7/dist-packages/Django-1.11-py2.7.egg/django/template/loader_tags.py", line 72, in render 
    result = block.nodelist.render(context) 
    File "/usr/local/lib/python2.7/dist-packages/Django-1.11-py2.7.egg/django/template/base.py", line 990, in render 
    bit = node.render_annotated(context) 
    File "/usr/local/lib/python2.7/dist-packages/Django-1.11-py2.7.egg/django/template/base.py", line 957, in render_annotated 
    return self.render(context) 
    File "/usr/local/lib/python2.7/dist-packages/Django-1.11-py2.7.egg/django/template/defaulttags.py", line 458, in render 
    url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app) 
    File "/usr/local/lib/python2.7/dist-packages/Django-1.11-py2.7.egg/django/urls/base.py", line 91, in reverse 
    return force_text(iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))) 
    File "/usr/local/lib/python2.7/dist-packages/Django-1.11-py2.7.egg/django/urls/resolvers.py", line 497, in _reverse_with_prefix 
    raise NoReverseMatch(msg) 
NoReverseMatch: Reverse for 'export_search_csv' not found. 'export_search_csv' is not a valid view function or pattern name. 

答えて

0

あなたは、テンプレート内のcsvリンクへの輸出を使用している場合は、このリンクでこのような何かを、現在のGETパラメータを指定しようとすることができます

<a href="{% url 'export_search_csv' %}?{{ request.GET.urlencode }}">export to csv</a> 

これにより、現在のフィルタ引数をエクスポートビューに渡すことができます。

+0

試しました。 "export_search_csv 'が見つかりませんでした。' export_search_csv 'は有効なビュー関数またはパターン名ではありません。"私は自分の機能に何か変更を加える必要がありますか? – surajitM

+0

@surajitMあなたはURLとビューをリンクしましたか? urls.pyとsearch.htmlコードを追加してください。 – neverwalkaloner

+0

は私の答えをhtmlとurls.pyで更新しました – surajitM

関連する問題