Пользовательский URL на основе одного html ввода без JS - PullRequest
0 голосов
/ 09 июля 2020

Итак, у меня, вероятно, самая простая задача, которую вы когда-либо могли решить с помощью sh формы, которую я не могу решить.

Я хочу ввести название бренда в строку поиска, нажать «Отправить» и он перенаправляет на url / brand / [input]

У меня уже есть рабочее представление для настройки URL в django. Как мне структурировать форму для создания желаемого URL-адреса?

  <form method="GET" action="">
     <input type="text" name="brand" id="brand" placeholder="Search..." aria-label="Search">
     <button type="submit">Search</button>
  </form>

views.py

class GetByBrand(ListView):
    def get(self, request, brand):

urls.py

urlpatterns = [
    path('', GetListView.as_view(), name='home'),
    path('brands/<str:brand>/', GetByBrand.as_view())
]

Ответы [ 3 ]

0 голосов
/ 09 июля 2020

ИЛИ используйте AJAX в Javascript в вашем HTML файле

$('#brand').on('submit',function(e){
 var brand = $('input[name=brands]')
 $.get("brands/"+brand, function(data, status){
 alert("Data: " + data + "\nStatus: " + status);

}); })

0 голосов
/ 09 июля 2020

Так что я в основном решил это, используя код, который я пробовал ранее, который идентичен тому, что рекомендовал Wagas Develper. Однако я не добавил эту последнюю строку в urls.py в основной папке проекта. (и я до сих пор не уверен, почему это решило эту проблему, но нашел решение - бросить дерьмо в стену)

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('shoes.urls')),
    path('brands/', include('shoes.urls'))

Для всех, кому интересно, как теперь структурировано представление на основе классов. *

urls.py в том же каталоге, что и views.py (в каталоге приложения, а не в основном каталоге проекта)

urlpatterns = [
    path('', GetListView.as_view(), name='home'),
    path('brands/<str:brand>/', GetByBrand.as_view()),
    path('brand_results/', GetByBrand.as_view(), name='b')
]

HTML Форма

  <form method="GET" class="form-inline my-2 my-lg-0" action="{% url 'b' %}">
    <input class="form-control mr-sm-2 search-btn" type="text" name="q" value="{{request.GET.q}}" placeholder="Search..." aria-label="Search">
    <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
  </form>
0 голосов
/ 09 июля 2020
 <form method="GET" action="brands/">
 <input type="text" name="brand" id="brand" placeholder="Search..." aria-label="Search">
 <button type="submit">Search</button>

в URL-адресах (импорт просмотров из. Import views)

urlpatterns = [
path('brands/', views.GetByBrand),
] 

в просмотрах из django .http import HttpResponse def GetByBrand (request): s = request.GET ['brand '] вернуть HttpResponse (s)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...