{% extends "base.html" %} {% block content %}
name: @stringgender: @int, 1 stands for female, 0 for malelastlogin: @datetimedisable: @boolmongoimport -d db1 -c user_collection1 --file data_100.json
djmongoreader to INSTALLED_APPS in settings.py>
INSTALLED_APPS = (
...
'djmongoreader',
)
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:
conn_str: MongoDB connection URI (format)
. If you provide a database name in URI, you can fetch it by following code later.
from djmongoreader.models import mongoReader mongoReader.get_dbname_in_uri()
perm_check_func: optional, permission check function for each query command.
def my_mongocall_perm_check(req, db, col, cmd):
if db != "db1": # limit db to db1
return False
if not col.startswith("user"): # limit collection to transaction_.*
return False
return True
query.html(source code), add
{% templatetag openblock %} include 'dj-mongo-reader/table.html' {% templatetag closeblock %}
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 %}
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)
db: @string, database name in MongoDB.
if you had provided database name in connection URI, you can fill the value here by mongoReader.get_dbname_in_uri()col: @string, collection name in MongoDBrowcount: @int, number of result in one page. optional, default: 50sort: @json_str, sort
statement .optional, default: no sort.
columns: @string, columns show in the result table. format: field names connected by comma
columns_trans: @json_str, database field name to display name mapping. optional, default:
use database field name directly
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.
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 %}