On Monday, December 25, 2017 at 8:51:46 PM UTC+6, Sajid Samsad wrote:
In my Django project, I have a Search field. I used Select2 autocomplete with it. I needed to fetch the
product_listfrom myProductmodel. So I created arest APIthat returns the product injsonformats.Here is my rest API code:
serializer.py:
class ProductSerializer(serializers.ModelSerializer ): class Meta: model = ProductList fields = ('product_id', 'product_name', 'product_image', 'product_available', 'product_description')views.py:
class JSONResponse(HttpResponse): def __init__(self, data, **kwargs): content = JSONRenderer().render(data) kwargs['content_type'] = 'application/json' super(JSONResponse, self).__init__(content, **kwargs) def list(request): if request.method == 'GET': products = ProductList.objects.filter(product_name__icontains =request.GET .get('q')) serializer = ProductSerializer(products, many=True) serializer_data = serializer.data customData = {'results': serializer_data} return JSONResponse(customData)Now in my html, in the
javascriptportion I used this code mentioned in this Select2 doc. The code I used, looks like this:base.html:
<script type="text/javascript"> $(document).ready(function() { $('.js-data-example-ajax').select2 ({ ajax: { url: "/api.alif-marine.com/search/products ", dataType: 'json', delay: 250, type: 'GET', data: function (params) { return{ q: params.term, // search term page: params.page }; }, processResults: function (data, params) { params.page = params.page || 1; return { results: data.results, }; }, cache: true }, placeholder: 'Search for a product', escapeMarkup: function (markup) { return markup; }, // let our custom formatter work minimumInputLength: 1, templateResult: formatRepo, templateSelection: formatRepoSelection }); function formatRepo (repo) { if (repo.loading) { return repo.text; } var markup = "<div class='select2-result-repository clearfix'>" + {# "<div class='select2-result-repository__avatar'><img src='" + repo.owner.avatar_url + "' /></div>" +#} "<div class='select2-result-repository__meta'>" + "<div class='select2-result-repository__title'>" + repo.product_name + "</div>"; if (repo.product_description) { markup += "<div class='select2-result-repository__description'>" + repo.product_description + "</div>"; } return markup; } function formatRepoSelection (repo) { return repo.product_name || repo.text; } }); </script>When I used
Postmanto check if the rest API works or not, it worked perfectly. For my query in thePostmanlike these:localhost:8000/api.alif-
marine.com/search/products?q=t or
localhost:8000/api.alif-
marine.com/search/products?q= tho or
localhost:8000/api.alif-
marine.com/search/products?q= thomas The retrieved json data is given below for query
localhost:8000/api.alif-marine.com/search/products?q=t : { "results":[ { "product_id":9, "product_name":"thomas", "product_image":"/media/media/tom_dushtu.jpg" , "product_available":"available" , "product_description":"jah dushtu" }, { "product_id":8, "product_name":"ami dissapointed", "product_image":"/media/media/dissapointment.jpg" , "product_available":"available" , "product_description":"I ma kinda dissapointed, you know.................." } ] }Now with all those, I couldn't make it work. The autocomplete is not working. Nothing is shown when I press one key or write the name of the whole product.
. It always has shown
Searching.... I tried reading the issues on theGithubrepo and some other things but couldn't solve it.What am I doing wrong?
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/735a2295-c44f-4320-a79c-2b663efe3f2e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
No comments:
Post a Comment