# Create A Search

<figure><img src="https://695498858-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F89GYZ7bCFBFFAobNJ6x5%2Fuploads%2FiQSgtrCa13lIyma1f9ks%2Fimage.png?alt=media&#x26;token=6f2a35cd-0b7a-46f5-8377-f85c00f0f093" alt=""><figcaption></figcaption></figure>

#### Saya menggunakan parameter GET dari request untuk mencari kata kunci pencarian dan melakukan filter berdasarkan hasil dari paramater.

Berhubung saya sudah punya views/logika untuk menampilkan list sebuah data, saya cukup menambahkan tambahkan logika pencarian.

{% code title="views.PY Before " overflow="wrap" lineNumbers="true" %}

```python
@user_passes_test(is_staff)
def news_lists(request):
    news_lists = PostNews.objects.all().order_by('-created_at')
    return render(request, 'dashboard/news_lists.html', {'news_lists': news_lists})
```

{% endcode %}

Menambahkan Statment

`from django.db.models import Q` dalam views.py

<figure><img src="https://695498858-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F89GYZ7bCFBFFAobNJ6x5%2Fuploads%2FQkht6BBIUnVA7MlaMjlc%2Fimage.png?alt=media&#x26;token=9a847a7b-1f33-45e2-8781-5b65fcf3b634" alt=""><figcaption></figcaption></figure>

```
// Some code
 query = request.GET.get('q', '')  # Tangkap kata kunci pencarian dari parameter 'q'
```

Full code:

{% code title="" lineNumbers="true" %}

```python
@user_passes_test(is_staff)
def news_lists(request):
    query = request.GET.get('q', '')  # Tangkap kata kunci pencarian dari parameter 'q'


    news_lists = PostNews.objects.all().order_by('-created_at')

    if query:
        news_lists = news_lists.filter(
            Q(translations__title__icontains=query) |  # Filter berdasarkan title
            Q(translations__content__icontains=query)  # Filter berdasarkan content
        ).distinct()  # Pastikan tidak ada duplikasi

    return render(request, 'dashboard/news_lists.html', {'news_lists': news_lists, 'query': query})
```

{% endcode %}

## HTML

{% code lineNumbers="true" %}

```html
 <form method="GET" action="/" class="search-form">
        <input type="text" name="q" placeholder="Search News..." value="{{ request.GET.q }}">
        <button type="submit"><i class="fas fa-search"></i></button>
      </form>
```

{% endcode %}

{% code lineNumbers="true" %}

```html
      <div data-gb-custom-block data-tag="for">
                <div data-gb-custom-block data-tag="empty"></div>
                <form method="get" action="" class="search-form">
                  <input type="text" name="q" placeholder="Search news..." value="{{ query }}">
                  <button type="submit">Search</button>
              </form>
      </div>
```

{% endcode %}
