2017-02-09 6 views
1

urls.pyДжанго переадресация не добавляет к предыдущему шаблону

url(r'^reg/$', views.reg_view, name='reg'), 
    url(r'^logout/$', views.logout_view, name="logout"), 
    url(r'^search/$', views.search_redirect, name='search_redirect'), 
    url(r'^search/(?P<keyword>.*?)/page/(?P<page>[0-9]+)/$', views.SearchView.as_view(), name='search'), 
    url(r'^search/(?P<keyword>.*?)/$', views.SearchView.as_view(), name='search'), 
    url(r'^t/create/$', views.create_topic, name='create_topic'), 
    url(r'^notifications/$', views.NotificationView.as_view(), name='notifications'), 


    url(r'^avatar/$', views.upload_avatar, name="upload_avatar"), 

Тех icluded в главном urls.py, так как это (на форуме один):

url(r'^accounts/', include('userena.urls')), 
    url(r'^forum/', include(niji_urls, namespace="niji")), 
    url(r'^$', index, name="index"), 
    url(r'^despre-noi/$', despre_noi, name='desprenoi'), 
    url(r'^(mugshots/.*)$', serve, {'document_root': settings.MEDIA_ROOT, }), 
    url(r'^messages/', include('userena.contrib.umessages.urls')), 
    url(r'^magazin/', include(application.urls)), 
    # url(r'^magazin/', include('magazin.urls', namespace="magazin")), 
    url(r'^oferte/', include('oferte.urls', namespace="oferte")), 

Форма

<form class="navbar-form navbar-left" role="search" method="get" action="{% url 'niji:search_redirect' %}"> 
       <div class="form-group"> 
        <input type="text" id="keywordInput" name="keyword" class="form-control" placeholder="{% trans 'Search' %}"> 
       </div> 
       <button type="submit" id="navSearchBtn" class="btn btn-default">{% trans 'Search' %}</button> 
      </form> 

Views.py

class SearchView(ListView): 
    model = Topic 
    paginate_by = 30 
    template_name = 'niji/search.html' 
    context_object_name = 'topics' 

    def get_queryset(self): 
     keywords = self.kwargs.get('keyword') 
     query = get_query(keywords, ['title']) 
     return Topic.objects.visible().filter(
      query 
     ).select_related(
      'user', 'node' 
     ).prefetch_related(
      'user__forum_avatar' 
     ).order_by(
      get_topic_ordering(self.request) 
     ) 

    def get_context_data(self, **kwargs): 
     context = super(ListView, self).get_context_data(**kwargs) 
     context['title'] = context['panel_title'] = _('Search: ') + self.kwargs.get('keyword') 
     context['show_order'] = True 
     return context 


def search_redirect(request): 
    if request.method == 'GET': 
     keyword = request.GET.get('keyword') 
     return HttpResponseRedirect(reverse('niji:search', kwargs={'keyword': keyword})) 
    else: 
     return HttpResponseForbidden('Post you cannot') 

Когда пользователь использует форму, чтобы отправить поисковый запрос, URL-адрес становится example.com/search/... вместо example.com/forum/search/ .. , Если я вручную введу последний url, он работает отлично, поэтому я предполагаю, что это должно быть каким-то образом связанным с формой? Или функция search_redirect?

ответ

0

По-видимому, это как-то связано с кнопкой. В частности, я думаю. Я точно не знаю, что .. но удалив его, он заработал