Django

Django

Explore django code snippets and tutorials

Django

Populate select box with ajax

Populate select box with ajax

javascript
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function populateSelectBox($element,url,method,data,datatype,display_field){
  /*
  $element: a jquery element for example $('#myselectbox')
  url : the url link for ajax Call
  method: method post or get
  data: a dict {},
  datatype: xml or json,
  display_field : the field name for display in selectbox <option value="pk"> display_field </option>
  */
    $.ajax({
      url: url,
      method: method,
      data: data,
      datatype: datatype,
      success: function(response){
        var data = JSON.parse(response);
        $element.html('');
        if (data.length != 0) {
          d = '<option value selected="selected">---------</option>';
          for (var i=0 ; i < data.length ; i++ ) {
            d += '<option value="' + parseInt(data[i].pk) + '">' + data[i].fields[display_field] + '</option>';
          }
        } else {
          d = '<option value selected="selected">---------</option>';
        }
        $element.html(d);
      }
    });
}
Django

Dynamic TemplateView

Dynamic TemplateView

python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
in urls.py

from .views import PageTemplateView  

and the urlpattern 

    url(r'^(?P<slug>[-\w]+)/$', PageTemplateView.as_view(),
        name='pages'),

in views.py 

from django.views.generic import TemplateView

class PageTemplateView(TemplateView):

    def get_template_names(self):
        templates = []
        template = 'pages/{}.html'.format(self.kwargs['slug'])
        templates.append(template)
        return templates


Then in  project root templates folder  create the folder with name pages. Add a static page for example contact.html  so the full path  is 'pages/contact.html'
Django

TemplateDoesNotExist middleware

TemplateDoesNotExist middleware

python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
from django.template import TemplateDoesNotExist
from django.views.defaults import page_not_found


class TemplateDoesNotExistMiddleware(object):
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        return self.get_response(request)

    def process_exception(self, request, exception):
        if isinstance(exception, TemplateDoesNotExist):
            return page_not_found(request, exception)