私はPythonで新しくなっていますので、詳細な説明をしてください。 だから、私は私が上でAJAXを経由してフォームをポストコードを持っている/テンプレート/検索に表示するために返すようにし、サーバー上のデータを取得するクエリ:クラスのメソッドをクラス自体の外に返す
views.py
class SomeClass(View):
def post(self, request, *args, **kwargs):
if request.method =='POST':
data = request.body
qd = QueryDict(data)
place = qd.values()[2]
indate = qd.values()[3]
outdate = qd.values()[0]
url = ('http://)
req = requests.get(url).text
json_data = json.loads(req)
self.results = []
for result in json_data.get('hotelList'):
self.results.append(result)
return HttpResponse(self.results)
def function(request):
var = SomeClass()
v = var.results
return render(request,'search.html', {'v':v})
search.htmlの
<body>
<form id="form" action="" method="post">{% csrf_token %}>
<div class="form-group">
<label for="place">Place</label>
<input type="text" class="form-control" id="place" placeholder="Input city name">
</div>
<div class="form-group">
<label for="check-in">check-in date</label>
<input type="text" class="form-control" id="check-in" placeholder="check-in date">
</div>
<div class="form-group">
<label for="check-out">check-out date</label>
<input type="text" class="form-control" id="check-out" placeholder="check-out date">
</div>
<button type="submit" class="btn btn-default" id="submit- btn">Submit</button>{% csrf_token %}
</form>
<div id="result">
{% for result in v %}
{{ result }}
{% endfor %}
</div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.2.3/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
// posting form using ajaxForm
$('#submit-btn').click(function(e) {
var options = {
type: "POST",
target: '#result', // div to update
url: '/query/',
data: {
place: $("#place").val(),
check_in: $("#check-in").val(),
check_out: $("#check-out").val()
},
success: function() {
alert('');
}
</script>
</body>
urls.py
urlpatterns += patterns('task6_API.views',
url(r'^search/$', 'search_page', name='search'),
url(r'^query/$', SomeClass.as_view(), name='search_result'),
)
私はちょうどself.result
を返す場合私は得る:
AttributeError: `'list' object has no attribute 'get'`
だから私はHttpResponse
を使う。
私はfunction
にresults
を受け取る必要があります。どうすれば入手できますか?
なぜあなたはこれをやろうとしている:私は本当にあなたがここに最初の場所でクラスベースのビューを使用している理由を、あなたのコードはとはるかに簡単になります表示されていない
最初の場所?関数ベースのビューからクラスベースのビューにアクセスしようとしていますか?私はこれがあなたが後にしているものを実装する正しい方法ではないと確信しています。 – Selcuk
今のところ私は機能ベースのビューや他のクラスからアクセスするかどうかは関係ありません。主なものは、授業外のリターンを使う方法です。おそらく私は概念的に間違っているので、私を修正してください。 – Andriy
あなたは何を達成しようとしているのかを説明すればさらに多くのことを推測することができますが、あなたの現在の方法は間違って間違っています。あなたの質問に答える。 'result'は' post'メソッドによって返され、理論的に 'v = var.post(request)'を使ってアクセスできます。しかし、 'post'メソッドはおそらく、' result'を計算するために余分な引数( '* args'や' ** kwargs')を必要とします。 – Selcuk