2011-11-09 7 views
2

私はDjangoの外部アプリケーションをインストールしている...Django - 自分のアプリケーションでDjango外部アプリケーションの汎用ビューを使用するには?

ジャンゴへの新たなんだが、この外部アプリケーションは「のpython2.6 /のsite-packages /干し草の山」内側「views.py」ファイルを持って、ヘイスタックと呼ばれます。私はこの "views.py"はDjangoの言葉では "一般的なビュー"と呼ばれると思います。

この汎用ビューは、このように「urls.py」を使用して呼び出されます。

urlpatterns = patterns('haystack.views', 
        url(r'^search/$', FacetedSearchView(form_class=FacetedSearchForm, searchqueryset=sqs), name='haystack_search'), 
) 

私は私のアプリには、この汎用ビューからのジャンプをする必要があります。私の質問はどのように私はこれを行うことができますか?

ヘイスタック「views.py」のコードは次のようになります:

from django.conf import settings 
from django.core.paginator import Paginator, InvalidPage 
from django.http import Http404 
from django.shortcuts import render_to_response 
from django.template import RequestContext 
from haystack.forms import ModelSearchForm, FacetedSearchForm 
from haystack.query import EmptySearchQuerySet 


RESULTS_PER_PAGE = getattr(settings, 'HAYSTACK_SEARCH_RESULTS_PER_PAGE', 20) 


class SearchView(object): 
    ... 

    def __init__(self, template=None, load_all=True, form_class=None, searchqueryset=None, context_class=RequestContext, results_per_page=None): 
    ... 

    def __call__(self, request): 
    ... 

    def build_form(self, form_kwargs=None): 
    ... 

    def get_query(self): 
    ... 

    def get_results(self): 
    ... 

    def build_page(self): 
    ... 

    def extra_context(self): 
    ... 

    def create_response(self): 
    ... 


def search_view_factory(view_class=SearchView, *args, **kwargs): 
    ... 


class FacetedSearchView(SearchView): 
    ... 

    def __init__(self, *args, **kwargs): 
    ... 

    def build_form(self, form_kwargs=None): 
    ... 

    def extra_context(self): 
    ... 


def basic_search(request, template='search/search.html', load_all=True, form_class=ModelSearchForm, searchqueryset=None, context_class=RequestContext, extra_context=None, results_per_page=None): 
    ... 

誰かが、私は「urls.py」からコードを取り出して、で働く事を置くために従うべき手順を与えることができます私の "views.py"アプリ?

よろしく、

+0

「views.py」は一般的なビューとは言えません。 views.pyは、ビュー(一般的なものや通常のもの)のための単なるコンテナです。通常、[一般的なビュー](https://docs.djangoproject.com/ja/1.3/topics/generic-views/)は、1つのタスクを実行し、多くの状況で使用できる単純なビューを意味します。 – Lycha

答えて

1

(r'^search/', include('haystack.urls')),を置くようにしてください。それはall in the docsだ、ところで

#your root urls.py 
from django.conf.urls.defaults import * 
from haystack.forms import FacetedSearchForm 
from haystack.query import SearchQuerySet 
from haystack.views import FacetedSearchView 

sqs = SearchQuerySet().filter(author='john') 

urlpatterns = patterns('haystack.views', 
url(r'^/my_custom_very_special_url$', FacetedSearchView(
    template='my/special/path/to/faceted_search.html', 
    searchqueryset=sqs, 
    form_class=FacetedSearchForm 
), name='haystack_search'), 
) 

:あなたはまた、 "Getting started with Haystack"

てみてくださいを読みたいと思うかもしれません。

+0

お返事ありがとうございます。問題は、私がHaystack "views.py"で定義されているテンプレートを使用する必要があることです。私のアプリケーション "views.py"から変数をテンプレートに渡す方法はいくつかありますか? –

+0

@Andre、あなただけのテンプレートと他の何も必要ですか? –

+0

返信Ivanのおかげで、私はテンプレートにファセット検索をし、URIの "search /"以外の名前を呼ぶ必要があります。 –

1

docsのすべての手順を実行しましたか?

コンテキスト内の他の変数を追加または上書きするには、extra_contextメソッドを使用します。

+0

あなたの返信ありがとうございますYasel。 –

関連する問題