Django Template Language for Rust
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
examples
src
tests
.gitignore
.travis.yml
Cargo.toml
LICENSE
README.md

README.md

Rust-DTL

Build Status Coverage Status Crates.io Status MIT licensed

Rust-DTL compiles Django Template Language.

This project is inspired by ideas: https://github.com/erlydtl/erlydtl/

Example

An Django template is a text file (e.g.: a HTML or CSS file) containing variables to control the runtime template content, tags to control the runtime template logic and comments, which get filtered out.

views/welcome.html
{% extends "layouts/main.html" %}
{% block title %}Welcome Page{% endblock %}
{% block content %}replacing the base content - variable: {{ test_var }} after variable {% endblock %}
views/layouts/main.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>MySite - {% block title %}{% endblock %}</title>								 
  </head>
  <body>
    {# TODO: add more text! #}
    <h1>{% block head %}Where my head?!{% endblock %}</h1>
    <p>Hello, {{username}}!</p>
    <p>{% block content %}Some text...{% endblock %}</p>
  </body>
</html>
main.rs
extern crate dtl;

use std::path::Path;
use std::error::Error;
use dtl::{Context, Template};

fn main() {
    let mut ctx = HashMapContext::new();
    ctx.set("username", Box::new("Ivan Ivanov".to_string()));
    ctx.set("test_var", Box::new("test-barstring".to_string()));
    let res = TemplateCompiler::render_file(PathBuf::from("views/"), Path::new("welcome.html"), &ctx);
    println!("{}", res.unwrap());
}

output
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>MySite - Welcome Page</title>					 
  </head>
  <body>
    
    <h1>Where my head?!</h1>
    <p>Hello, Ivan Ivanov!</p>
    <p>replacing the base content - variable: test-barstring after variable some text </p>
  </body>
</html>

License

Rust-DTL is released under the MIT license.