Building data-driven web apps with Pyramid and SQLAlchemy Transcripts
Chapter: Your first Pyramid site
Lecture: Project structure

Login or purchase this course to watch this video and the rest of the course contents.
0:00 Let's take a quick tour
0:01 of the directory structure, or the file structure
0:03 that we have for our pyramid project
0:04 so you can see what, how they've organized it
0:07 and what all the pieces mean.
0:09 Regardless whether you've created this in PyCharm
0:12 or you've created it using Cookiecutter
0:13 on the Command line
0:14 you'll get the same basic output.
0:16 So over here, we'll have our directory
0:20 here it's called make_your_project.
0:22 This is basically the top level package
0:24 that represents our website.
0:26 So in here we have a static directory.
0:28 This is where CSS, JavaScript, and Images go.
0:31 You don't have to drop them all flat in there, right?
0:34 That's how the templates work
0:37 but I would create a css folder, an images folder
0:39 a javascript folder, maybe even more than that.
0:42 So any, sort of, directory structure
0:44 you want to create underneath there, it's totally fine.
0:47 Then the dynamic HTML templates live in templates.
0:50 And PyCharm colors them purple
0:52 but there's nothing really special about that directory.
0:55 When our app starts up
0:57 it's going to run this __init__.py
1:00 and there's a main method in there that gets executed.
1:03 So that is the entry point for your app
1:06 that's where all the initial setup goes
1:08 where we register the route
1:10 and maybe we read the database configuration
1:12 and get it all set up, things like that.
1:15 We're going to talk about how to test your web applications
1:18 and one of the real big advantages of Pyramid is
1:20 it's super, super testable.
1:22 We'll talk about how to do that
1:25 and it's really, really nice.
1:27 And finally, where your views or controller methods go
1:30 this is right now, a single views.py file.
1:34 That might be okay for a really simple app
1:37 but in practice, we'll want more organization for our tests
1:40 and more organization for our views, even templates.
1:43 So, consider this the starting point
1:46 but as we build this up, I'll show you ways
1:48 where you'll probably want to reorganize things as if
1:51 you know, if this is going to be a real major application.
1:55 That's how it starts out, just a test file and a view file.
1:59 Now, this .egg_info thing, this is an artifact
2:03 from running python setup.py develop
2:06 and it's needed for Python to do its magic
2:08 but you can just ignore it, okay?
2:10 So it's going to be there, but just ignore it
2:12 it's part of the register of this package
2:15 for development mode.
2:17 We have our two project settings and configuration files.
2:21 We've gone over this a few times
2:22 but development.ini, that's what you want for dev
2:24 production for production, probably, things like that.
2:28 And that's really all you need to mess with.
2:29 Maybe setup.py, maybe?
2:31 If you're going to add a dependency
2:33 or something like that in there
2:34 but this is a starting place.
2:35 So you know how and where to go look for what you need.
2:39 Typically you're going to be in __init__.py
2:41 in views, in templates, dropping stuff into static.