So far, we've been writing our view functions with HTML hard-coded directly in the Python code. I've done that to keep things simple while I demonstrated core concepts, but in the real world, this is nearly always a bad idea. Django ships with a simple yet powerful template engine that allows you to separate the design of the page from the underlying code. We'll dive into Django's template engine in the next chapter.