index.htmlの検索フォームで、DB内にあるタイトルをautocompleteで表示させたいです。
値はすでにindex.titleに格納しています。
aaaa
bbbb
cccc
こちらの参考サイトから以下のようなコードを作成しましたが、当該のエラーが発生している状況となります。
ajaxやjQueryの実装は今回が初めてなので、まだ多くの間違いがあるかもしれません・・・。
気になる点や、間違いをご指摘お願いします。
エラー↓
Internal Server Error: /api/get_titles/ Traceback (most recent call last): File "/home/vagrant/.pyenv/versions/3.6.0/lib/python3.6/site-packages/django/core/handlers/exception.py", line 41, in inner response = get_response(request) File "/home/vagrant/.pyenv/versions/3.6.0/lib/python3.6/site-packages/django/core/handlers/base.py", line 198, in _get_response "returned None instead." % (callback.__module__, view_name) ValueError: The view app.views.get_titles didn't return an HttpResponse object. It returned None instead. [13/Aug/2017 14:12:31] "GET /api/get_titles/?term=aaa HTTP/1.1" 500 14395
作成したコード↓
django
1#model.py 2from django.db import models 3class Index(models.Model): 4 title = models.CharField(max_length=30) 5 def __str__(self): 6 return self.title
django
1#views.py 2from django.shortcuts import render,redirect,render 3from .models import Title_Post 4from django.http import HttpResponse 5import json 6 7def index(request): 8 return render(request, 'app/index.html') 9 10def get_titles(request): 11 if request.is_ajax(): 12 q = request.GET.get('term', '') 13 titles = Index.objects.filter(title__icontains = q )[:10] 14 results = [] 15 for title in titles: 16 title_json = {} 17 title_json = title.title 18 results.append(title_json) 19 data = json.dumps(results) 20 else: 21 data = 'fail' 22 mimetype = 'application/json' 23 return HttpResponse(data, mimetype)
django
1#urls.py 2from django.conf.urls import include, url 3from app import views 4 5app_name = 'app' 6 7urlpatterns = [ 8 url(r'^$', views.index, name='index'), 9 url(r'^api/get_titles/', views.get_titles, name='get_titles'),
html
1<!-->index.html<--> 2<head> 3 <meta charset=utf-8 /> 4 <link rel="stylesheet" href="http://code.jquery.com/ui/1.8.18/themes/base/jquery-ui.css" type="text/css" media="all" /> 5 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script> 6 <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js" type="text/javascript"></script> 7 <script> 8 $(function() { 9 $("#titles").autocomplete({ 10 source: "/api/get_titles/", 11 minLength: 1, 12 }); 13 }); 14 </script> 15</head> 16 17<div class="ui-widget"> 18 <label for="titles">Title: </label> 19 <input id="titles"> 20</div>
以上、よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/13 13:31