Training five or more people?
Setup a business plan, save up to 50%, and get visibility into your team.

Adding a CMS to Your Pyramid Web App

This course is carbon neutral.

Course Summary

Are you deciding whether to build a Python web app in Pyramid or go with a CMS like Wordpress? This can seem like an either/or decision. Either, you can have a great data-driven web app or some clunky PHP thing that marketing and other folks can use to create the site.

But as you'll learn in this course, it's quite easy to add a powerful CMS to your existing web app!

Source code and course GitHub repository

github.com/talkpython/adding-a-cms-to-your-web-app-course

What's this course about and how is it different?

This unique course shows you how to leverage your existing skills in your Python web framework and the huge investment you have made in building a scalable application on the web to add a user-friendly, high-performance CMS capability right on top of that app. You can add these features without modifying your existing site's behavior or (besides startup) the existing code.

If you have wished you could simply sign in to your site and add new functionality, pages, redirects, and more but have scoffed at adding a separate CMS like app layer on the side, this is for you.

We treat you as knowledgeable Pyramid developers who need to add this cool functionality to empower your team to do more on their own with your site.

We will start from first principles of routing, views, and templates to help you have full control over this CMS functionality, just like you have for the rest of your web app.

Flask or Pyramid web framework?

This course comes in two flavors. Pick the one that makes you happy:

What topics are covered

In this course, you will:

  • Learn how to have data-driven pages and CMS pages coexist in your app
  • Add CMS pages to your existing website or a new website you're just launching
  • AVOID running a parallel WordPress or Joomla site for this CMS-like functionality
  • Take full advantage of the capabilities of your site while working with landing pages and other CMS elements
  • Allow marketing teams, business teams, and others to edit site safely and professionally
  • Employ the markdown-subtemplate package for extreme performance
  • Use markdown-subtemplate's content reuse features for creating shared elements across pages
  • Write markdown content and render rich HTML
  • Use a proper, full-featured markdown editor on your admin backend for a professional and polished experience for your internal users
  • Add the CMS superpower to your web app
  • And lots more

View the full course outline.

Who is this course for?

This course is for anyone who has or is creating a Pyramid web application and would like a much better way to fully round out the content of the site.

Yes, every web app will need some data-driven elements. If you ran a book store, there would be a page showing the book details: cover, title, price, summary, etc. But you would also have a contact us page, a privacy policy page, a landing page for a marketing campaign, and on and on. If you want to create all that other content without writing new code and redeploying the site, then this course is for you.

As far as knowledge prerequisites, we assume that anyone taking this course has basic knowledge of:

  • Python (you can write a function, create a class, reuse elements via import)
  • Pyramid
  • HTML and CSS

What will we build?

In this course, we take an existing web application and add this CMS capability to it. We will start with a clone of the PyPI website (pypi.org) written in Pyramid.

Then we will systematically add our CMS features to that application. We will add the ability to have arbitrary redirects in the URL structure (think bit.ly) *as well as *full pages (think WordPress). Once we can capture and render these, we will add a deep admin section with a proper markdown editor and other capabilities to the app.

Concepts backed by concise visuals

While exploring a topic interactively with demos and live code is very engaging, it can mean losing the forest for the trees. That's why when we hit a new topic, we stop and discuss it with concise and clear visuals.

Here's an example of how routing works and a given URL is mapped to an appropriate view method.

Example: Concepts backed by concise visuals

Get hands-on for almost every chapter

Learning to code is an interactive experience. That's why it's important to write code and explore the apps we are building during this course.

Each chapter has code for the app as it began and as it finished. You are encouraged to follow along and create the relevant part of the CMS features after each chapter. You can start with the same code we do in the course and if you ever get lost, "reset" your progress by jumping in at that chapter.

Here's the GitHub repo structure that you can explore now to see what we're talking about.

Example: Code snapshotted at each chapter

This course is delivered in HiDPI

This course is delivered in 1280x720 HiDPI (2560x1440 true resolution). That means when you are watching the videos for this course, it looks like you are really sitting next to the instructor looking at their screen.

Every little detail, menu item, and icon is clear and crisp. You can watch the introductory video at the top of this page to see an example.

Follow along with subtitles and transcripts

Each course comes with subtitles and full transcripts. The transcripts are available as a separate searchable page for each lecture. They also are available in course-wide search results to help you find just the right lecture.

Each course has subtitles available in the video player.

Who am I? Why should you take my course?

Who is Michael Kennedy?

My name is Michael, nice to meet you. ;) There are a couple of reasons I'm especially qualified to teach you Python.

 1. I'm the host of the #1 podcast on Python called Talk Python To Me. Over there, I've interviewed many of the leaders and creators in the Python community. I bring that perspective to all the courses I create.

 2. I've been a professional software trainer for over 10 years. I have taught literally thousands of professional developers in hundreds of courses throughout the world.

 3. Students have loved my courses. Here are just a few quotes from past students of mine.

"Michael is super knowledgeable, loves his craft, and he conveys it all well. I would highly recommend his training class anytime." - Robert F.
"Michael is simply an outstanding instructor." - Kevin R.
"Michael was an encyclopedia for the deep inner workings of Python. Very impressive." - Neal L.

Free office hours keep you from getting stuck

One of the challenges of self-paced online learning is getting stuck. It can be hard to get the help you need to get unstuck.

That's why at Talk Python Training, we offer live, online office hours. You drop in and join a group of fellow students to chat about your course progress and see solutions via screen sharing.

Just visit your account page to see the upcoming office hour schedule.

The time to act is now

On the internet, content is king. You interact with customers and rank in search engines based on the pages on your site. Take this course and you'll have the most tightly integrated experience for quickly adding content to your app. Your users will not be able to tell the difference between the CMS side and the structured side of your app.

Join this course today! You've got nothing to lose. Every one of our courses comes with a 2-week money-back guarantee.

BTW, this page, along with many others on our site, was created with exactly this technique which we have extracted into a framework for this course. ;)

Course Outline: Chapters and Lectures

11:16
4:32
4:38
1:26
0:40
5:27
2:05
2:16
1:06
14:09
2:28
5:35
6:06
28:46
3:03
4:09
4:06
6:57
4:34
1:40
4:17
1:13:52
1:42
4:51
5:49
1:11
2:02
5:26
1:20
7:11
4:09
7:12
2:29
2:10
6:05
3:03
2:11
4:01
6:01
1:01
2:15
3:43
33:22
3:39
5:25
4:20
1:41
3:49
10:20
4:08
37:06
1:06
1:36
3:22
5:14
2:48
6:03
6:15
4:13
4:15
0:56
1:18
16:37
3:18
2:33
2:04
6:36
1:18
0:48
14:01
1:55
2:53
1:43
5:48
1:42
33:08
4:22
2:17
1:55
6:46
2:58
3:32
3:59
7:19
18:55
1:46
1:02
5:39
2:59
5:38
0:52
0:59
19:47
1:35
3:34
1:01
1:37
2:18
1:33
0:56
1:34
2:33
1:54
1:12
49:47
4:07
1:35
2:14
3:10
6:50
1:56
4:20
7:09
4:01
3:35
6:35
4:15
50:34
8:18
3:52
2:26
5:02
6:12
2:10
6:43
7:07
4:03
0:44
0:49
1:59
0:37
0:32
Bundle and save 72% Team Gift

Questions? Send us an email: contact@talkpython.fm