urls.py
from django.conf.urls import url
app_name = 'your_app'
urlpatterns = [
url(r'^query/page/(?P<otherModelSlug>[a-zA-Z0-9]+)/?', PageYouQueryFrom.as_view(), name='query_page'),
…
# yourWebsite.com/your_app/util/kittens
url(r'^util/(?P<fieldValue>[a-zA-Z0-9]+)/?', GetDataUtilitly.as_view(), name='get_data_util'),
]
data_template.html
{{result_html}}
page_you_want_to_ajax.html
{% extends "base.html" %}
{% block script-inline %}
$(document).ready( function () {
$("#place_to_query").change(function() {
var queryURL = "/your_app/util/" + $(this).val();
queryBox = $(this)
$.get({
url: queryURL,
contentType: "application/x-www-form-urlencoded",
})
.done(function( data ) {
html = $( data ).text()
queryBox.parent().after(html)
});
});
});
{% endblock script-inline %}
{% block content %}
{{ otherModel }} <!-- or it could be a specific field -->
<input id="place_to_query"></input>
<!-- The ajax will go here afterwards-->
{% endblock content %}
メインビュー-PageYouQueryFrom.py
# this is a Class Based View, but you can use a function based one too
class PageYouQueryFrom(TemplateView):
template_name = 'path/to/page_you_want_to_ajax.html'
def get_context_data(self, **kwargs):
context_data = super(PageYouQueryFrom, self).get_context_data(**kwargs)
context_data['otherModel'] = get_object_or_404(OtherModel, slug=self.kwargs['otherModelSlug'])
return context_data
データクエリビュー-GetDataUtilitly.py
from django.views.generic import TemplateView
import requests
from pyquery import PyQuery
# this is a Class Based View, but you can use a function based one too
class GetDataUtilitly(TemplateView):
template_name = 'path/to/data_template.html'
def get_context_data(self, **kwargs):
field_value = self.kwargs['fieldValue']
page = requests.get('https://www.page.com?searchField=' + field_value)
pq = PyQuery(page.content)
# Get the (html) portion of what you want
result_html = pq('div.c-table__row').html()
return {'result_html': result_html}