如何在Django中创建端点视图以获取用于自动完成的queryset?

2024-05-06 04:02:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用jQueryUI为自动完成搜索创建queryset。我写了一个基于函数的视图,在我看来,它应该可以工作,但它并没有像它应该的那样工作。当我键入有效单词时,它会将我重定向到应该显示搜索结果的位置,但在那里我得到了错误

AttributeError: 'Branches' object has no attribute 'FIELD'

这是我的榜样

class Branches(models.Model):
    ifsc = models.CharField(primary_key=True, max_length=11)
    bank = models.ForeignKey(Banks, models.DO_NOTHING, blank=True, null=True)
    branch = models.CharField(max_length=250, blank=True, null=True)
    address = models.CharField(max_length=250, blank=True, null=True)
    city = models.CharField(max_length=50, blank=True, null=True)
    district = models.CharField(max_length=50, blank=True, null=True)
    state = models.CharField(max_length=26, blank=True, null=True)

我的观点

def search_ifsc(request):
    if request.is_ajax():
        q = request.GET.get('q', '').capitalize()
        search_qs = Branches.objects.filter(ifsc__startswith=q)
        results = []
        print(q)
        for r in search_qs:
            results.append(r.FIELD)
        data = json.dumps(results)
    else:
        data = 'fail'
    mimetype = 'application/json'
    return HttpResponse(data, mimetype)

url.py

path('ajax/search/' , views.search_ifsc, name='search_view')

模板

<div class="position-absolute top-50 start-50 translate-middle">
    <nav class="navbar navbar-light bg-light">
        <div class="container-fluid" class="ui-widget">
            <form id="search" method="POST" action="http://127.0.0.1:8000/ajax/search/">
                <!-- {% csrf_token %} -->
                <input type="text" class="form-control" id="q" name="q">
                <button type="submit" class="btn btn-default btn-submit">Submit</button>
                </form>
        </div>
    </nav>
</div>

<script type='text/javascript'>
        $(document).ready(function(){ 
            $("#q").autocomplete({
                source: "http://127.0.0.1:8000/ajax/search/",
                minLength: 2,
                open: function(){
                    setTimeout(function () {
                        $('.ui-autocomplete').css('z-index', 99);
                    }, 0);
                }
              });
        });

我在键入并按enter键时出现此错误

Internal Server Error: /ajax/search/
Traceback (most recent call last):
  File "C:\Users\JAY SARDAR\projects\Django+Angular\Fyle-assignment\Backend\restapi\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
    response = get_response(request)
  File "C:\Users\JAY SARDAR\projects\Django+Angular\Fyle-assignment\Backend\restapi\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\JAY SARDAR\projects\Django+Angular\Fyle-assignment\Backend\restapi\rest_api\api\views.py", line 50, in search_ifsc
    results.append(r.FIELD)
AttributeError: 'Branches' object has no attribute 'FIELD'

作为一个初学者,我尝试了很多教程来让视图工作,但这还不够。是什么导致了这个错误?注意我的管理员,其他页面工作正常


Tags: truefieldsearchmodelsrequestajaxnulllength
1条回答
网友
1楼 · 发布于 2024-05-06 04:02:16
def search_ifsc(request):
    if request.is_ajax():
        q = request.GET.get('q', '').capitalize()
        search_qs = Branches.objects.filter(ifsc__startswith=q)
        results = []
        print(q)
        for r in search_qs:
            results.append(r.ifsc)
        data = json.dumps(results)
    else:
        data = 'fail'
    mimetype = 'application/json'
    return HttpResponse(data, mimetype)

相关问题 更多 >