{% extends "base.html" %} {% block content %}

1 Database and collection

Suppose we have database db1, collelction user_collection1

1.1 Data format

For each record, we have following fields:

1.2 Import sample data to MongoDB

Download sample data here: data_100.json
mongoimport -d db1 -c user_collection1 --file data_100.json

2, Add application to your Django project

add djmongoreader to INSTALLED_APPS in settings.py>
INSTALLED_APPS = (
    ...
    'djmongoreader',
)

3, Customize dj-mongo-reader

3.1 Django setting

in setting.py
MONGO_READER_SETTINGS = {'conn_str': os.getenv('MONGOLAB_URI', 'mongodb://127.0.0.1:27017/db1'),
                         'perm_check_func': 'sampleapp.security.my_mongocall_perm_check'}
two keys in dj-mongo-reader setting dict:

3.2 Add result HTML slice to your application

In applicaiton's page query.html(source code), add
{% templatetag openblock %} include 'dj-mongo-reader/table.html' {% templatetag closeblock %}

3.3 Customize the result page

Create templates/dj-mongo-reader/table.html( source code), modify the HTML elements in Django blockdj-mongo-rest-table remember to add extends statement
{% templatetag openblock %} extends "dj-mongo-reader/core.html"{% templatetag closeblock %}

3.4 Display options in backend

Code in views.py(source code)to render the page contains the form and result table
from djmongoreader.models import mongoReader
def query(request):
    context = RequestContext(request)
    _dbname = mongoReader.get_dbname_in_uri()
    dbname = _dbname if _dbname else "db1"
    args = {"db": dbname,
            "col": "user_collection1",
            "rowcount": 10,
            "sort": json.dumps({"name": -1}),
            "columns": "name,disable,gender,lastlogin",
            "columns_trans": json.dumps({"name": "user name", "lastlogin": "last login"})
    }
    return render_to_response("query.html", args, context_instance=context)
    
These parameters provide an initial query and rendering options All these parameters passed to frontend will be assigned to same-named variables in Javascript, and can be modified by demands.

3.5 Display options in frontend

Data transformation
In query.html(source code) or its corresponding Javascript file, for each field you want to make a transformation, write a js function named in format <field name>_process. The function accept only one parameter, the raw value read from MongoDB.
1, Show Male if raw data in field gender is 0, otherwise show Female
window.gender_process = function (val) {
    return (val ? 'Female' : 'Male');
};
    
2, Show different icon for field disable field.
window.disable_process = function (val) {
    return (val ? '<span class="glyphicon glyphicon-ok" aria-hidden="true"></span>' : '<span class="glyphicon glyphicon-remove" aria-hidden="true"></span>');
};
    
{% endblock %}