1---2name: phalconvee-devstart-stack-django3description: Django Stack Conventions4---56# Django Stack Conventions78## Architecture9- Django 5.x. Class-based views for CRUD (CreateView, UpdateView, etc.).10- Function-based views for simple or custom logic.11- Django REST Framework for API projects. ModelSerializer + ViewSets.12- Settings split: `config/settings/{base,dev,prod}.py` or django-environ.1314## Models15- Explicit `__str__`, `Meta.ordering`, `verbose_name`.16- Field validators on the model. Custom `clean()` for cross-field validation.17- Use `related_name` on all ForeignKey / ManyToMany fields.18- Abstract base models for shared fields (timestamps, soft delete).1920## Validation21- Django Forms for template-based views. Clean methods for custom validation.22- DRF Serializers for API views. Never validate in views directly.23- Permissions: Django's built-in permission system + custom permission classes.2425## Templates26- Base template inheritance: `base.html` → `app/base.html` → `app/page.html`.27- Template tags and filters for reusable logic. No complex Python in templates.28- Tailwind CSS via django-tailwind package or CDN.2930## Testing31- pytest-django. No `unittest.TestCase`.32- Factory Boy for model factories. No fixtures.33- Test views via `client.get()`, `client.post()`.34- Test both 200 and 403/404 responses.35- Run: `pytest`.3637## Common Patterns38```python39# Class-based view with permission40class ProjectUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView):41 model = Project42 form_class = ProjectForm43 template_name = 'projects/edit.html'4445 def test_func(self):46 return self.get_object().owner == self.request.user4748# pytest test49def test_owner_can_update_project(client, user_factory, project_factory):50 user = user_factory()51 project = project_factory(owner=user)52 client.force_login(user)53 response = client.post(54 reverse('projects:update', args=[project.pk]),55 {'name': 'Updated'}56 )57 assert response.status_code == 30258 project.refresh_from_db()59 assert project.name == 'Updated'60```6162---63> Source: [phalconVee/devstart](https://github.com/phalconVee/devstart) — distributed by [TomeVault](https://tomevault.io).64<!-- tomevault:4.0:skill_md:2026-06-16 -->
Run npx skillmds@latest add tomevault-io/phalconvee-devstart-stack-django in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
Django Stack Conventions It is listed under Coding & Dev Tools on SkillMD.
This skill has not completed SkillMD's automated safety review yet. Independent scanners report: SkillSpector: PASS, Skill Scanner: PASS. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
tomevault-io (@tomevault-io) published this skill. Their other Agent Skills are listed on their SkillMD profile.