JavaScript を使用して、django テンプレート内でセルの内容にアクセスしようとしています。
テーブルには x 行を含めることができます。「クリックして表示」リンク (TEST 列内) のいずれかがクリックされると、行の {{ i.description }} がビュー (ajax_test 関数) に渡され、「クリックして表示」リンクが表示されます。消えて、ビューから返された html に置き換えられます。これが私が求めていることをしないことを十分に知っているので、私はひどいJavaScriptの試みを含めました。誰かが助けてくれれば、大歓迎です。
テンプレート:
{% extends "myapp/base.html" %}
{% block content %}
<p>You searched for: <strong>{{ query }}</strong></p>
{% if elements %}
<p>Found {{ elements|length }} Element{{ elements|pluralize }}.</p>
<div class="datagrid"><table>
<thead><tr>
<th>Name</th>
<th>Description</th>
<th>Type</th>
<th>Parameter Arguments</th>
<th>TEST</th>
<tbody>
{% for i in elements %}
<tr class="{% if forloop.counter|divisibleby:2 %}alt{% else %}{% endif %}">
<td><a href="/myapp/{{ i.id }}/editElement">{{ i.name }}</a></td>
<td><div id="desc">{{ i.description }}</div></td>
<td>{{ i.type }}</td>
<td>{% for a in i.parameter.all %}{{ a.argument }}{% endfor %}</td>
<td><div class="clicks"><a href="#">click to show</a></div></td>
</tr>
{% endfor %}
</tbody>
</table></div>
{% endblock %}
Javascript (これは私が本当に手がかりを得ていないところです。以下のコードは失敗した試みです)。コードは静的ファイル (base.html からロードされる ajax_test.js) として含まれています。
$(function(){
var myCell = document.getElementById("desc");
var cellContents = (myCell.innerHTML);
$('.clicks').click(function() {
$.ajax({
type: "POST",
url: "/myapp/test_ajax/",
data: {
'ajax_data' : cellContents,
'csrfmiddlewaretoken' : $("input[name=csrfmiddlewaretoken]").val()
},
success: ajaxSuccess,
dataType: 'html'
});
});
});
function ajaxSuccess(data, textStatus, jqXHR)
{
$('.here').html(data); //I would like to put this in the "click to show" cell. I was placing it in a random div for testing.
}
test_ajax ビュー:
def ajax_test(request):
if request.POST:
ajax_data = request.POST['ajax_data']
ajax_query = #some generic lookup using ajax_data
return render_to_response('myapp/ajax_test.html', {'ajax_query': ajax_query})
ajax_test テンプレート (セルに返されます):
{{ ajax_query }}