✨ Supercharge your template development workflow ✨
A comprehensive VS Code snippet collection for Jinja2 and Django template engines.
🚀 Why Use This Extension?
Writing template code can be tedious with all those brackets, tags, and syntax. This extension eliminates the repetitive typing by providing smart, tab-completion snippets for common Jinja2 and Django template patterns.
Stop typing this:
{% for item in items %}
<!-- your code -->
{% endfor %}Start typing this:
ptfor → Tab → Fill in the blanks!
✨ Features
- 🎯 20+ carefully crafted snippets for Jinja2 and Django
- ⚡ Lightning-fast - Type
ptprefix and let IntelliSense do the rest - 🎨 Smart cursor positioning - Jump to exactly where you need to type
- 🔄 Multi-cursor support - Tab between placeholders seamlessly
- 🛠️ Framework-agnostic - Works with Flask, Django, FastAPI, and any Python web framework
- 📦 Zero configuration - Works out of the box
📦 Installation
From VS Code Marketplace (Recommended)
- Open VS Code
- Press
Ctrl+P/Cmd+P - Type
ext install RickyWhite.python-template-snippets - Press Enter and reload VS Code
Manual Installation
- Download the latest
.vsixfrom Releases - Open VS Code
- Go to Extensions (
Ctrl+Shift+X/Cmd+Shift+X) - Click the
...menu →Install from VSIX - Select the downloaded file
🎯 Quick Start
- Open any HTML file in VS Code
- Type
ptto see available snippets - Select a snippet from the IntelliSense menu (or type the full prefix)
- Press
Tabto trigger the snippet - Fill in the placeholders and press
Tabto jump between them
💡 Pro Tip
Enable tab completion in your VS Code settings for the best experience:
{
"editor.tabCompletion": "on"
}📚 Snippet Reference
All snippets use the pt prefix (short for "Python Template"). Here's the complete reference:
🌐 General Snippets
Works with both Jinja2 and Django
| Prefix | Description | Output |
|---|---|---|
ptnew |
New HTML template file | Complete template with extends and blocks |
ptvar |
Template variable | {{ variable }} |
ptfilt |
Variable with filter | {{ variable | filter }} |
ptcode |
Code block tag | {% code %} |
ptblock |
Block tag | {% block name %}...{% endblock %} |
ptext |
Extends tag | {% extends 'base.html' %} |
ptsup |
Super function | {{ super() }} |
ptfor |
For loop | {% for item in items %}...{% endfor %} |
ptif |
If statement | {% if condition %}...{% endif %} |
ptifel |
If/else statement | {% if %}...{% else %}...{% endif %} |
ptelif |
If/elif/else statement | {% if %}...{% elif %}...{% else %}...{% endif %} |
ptwith |
With statement | {% with variable %}...{% endwith %} |
🔧 Jinja2-Specific Snippets
For Flask, FastAPI, and other Jinja2 projects
| Prefix | Description | Output |
|---|---|---|
ptj-url |
Static file URL | {{ url_for('static', filename='file.css') }} |
ptj-mac |
Macro definition | {% macro name %}...{% endmacro %} |
ptj-com |
Comment | {# comment #} |
ptj-set |
Set variable | {% set var = value %} |
🎨 Django-Specific Snippets
For Django projects
| Prefix | Description | Output |
|---|---|---|
ptd-url |
URL tag | {% url 'view-name' args %} |
ptd-load |
Load tag library | {% load static %} |
ptd-stat |
Static file | {% static 'path/to/file' %} |
ptd-inc |
Include template | {% include 'template.html' %} |
ptd-firstof |
First of variables | {% firstof var1 var2 %} |
💻 Usage Examples
Creating a New Template
Type ptnew and press Tab:
{% extends 'base.html' %}
{% block content %}
<!-- Your cursor starts here -->
{% endblock content %}
{% block scripts %}
{% endblock scripts %}Adding a For Loop
Type ptfor and press Tab:
{% for item in items %}
<!-- Your cursor starts here -->
{% endfor %}Then tab through: item → items → loop body
Django Static File
Type ptd-stat and press Tab:
{% static 'css/style.css' %}🤝 Contributing
Found a bug? Want a new snippet? Contributions are welcome!
- Report Issues: Open an issue
- Request Features: Have an idea? Share it!
- Submit PRs: Fork, code, and submit a pull request
Suggesting New Snippets
When requesting a new snippet, please include:
- The template syntax you want added
- Which framework it's for (Jinja2/Django/both)
- A brief description of what it does
📝 Release Notes
See GitHub Releases for the detailed version history and changelog.
💖 Support This Project
This extension is free and open source. If you find it helpful, consider:
📜 License
MIT © Ricky White
🙏 Acknowledgments
Created and maintained by Ricky White
Special thanks to all contributors who have helped improve this extension!
Happy Coding! 🎉
Made with ❤️ for the Python community
