Creating a Project In Django

Creating a Project In Django

So far we learn and understand what exactly Django is and how it works. Now let us build a cool app (project) in Django. We will learn, Django by building a Social Media app. So let's get started with the tutorial.

Let's learn by example.

Throughout this tutorial, we'll walk you through the creation of a basic Social Media application.

It'll consist of 4 parts:

  • An authentication system in Django (login, signup, logout).
  • A public site that lets people view posts and let an authenticated user to create posts
  • An admin site that lets you add, change, and delete posts.
  • Hosting your first Social Media website over internet on pythonanywhere.com

We'll assume you have Django installed already. You can tell Django is installed and which version by running the following command in a shell prompt.

Linux/Mac:

python -m django --version

Windows:

py -m django --version

If Django is installed, you should see the version of your installation. If it isn't, you'll get an error telling "No module named django".

Whether you are on Windows or Linux, From the command line, cd into a directory where you'd like to store your code, then run the following command:

django-admin startproject social

This will create a social directory in your current directory. This directory will consist of an initial setup to build the website -- a collection of settings for an instance of Django, including database configuration, Django-specific options, and application-specific settings.

The Project Structure

Let's look at what startproject created:

social/
    manage.py
    social/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py

These files are:

  • The outer social/ root directory is a container for your project. Its name doesn't matter to Django; you can rename it to anything you like.
  • manage.py: A command-line utility that lets you interact with this Django project in various ways.
  • The inner social/ directory is the actual Python package for your project. Its name is the Python package name you'll need to use to import anything inside it (e.g. myblog.urls).
  • social/__init__.py: An empty file that tells Python that this directory should be considered a Python package.
  • social/settings.py: Settings/configuration for this Django project. Django settings will tell you all about how settings work.
  • **social/urls.py**: The URL declarations for this Django project; a "table of contents" of your Django-powered site.
  • social/asgi.py: An entry-point for ASGI-compatible web servers to serve your project.
  • social/wsgi.py: An entry-point for WSGI-compatible web servers to serve your project.

Let's verify your Django project works. Change into the outer social directory, if you haven't already, and run the following commands:

python manage.py runserver

You'll see the following output on the command line:

Performing system checks...

System check identified no issues (0 silenced).

You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.

February 03, 2020 - 15:50:53
Django version 2.1.7, using settings 'social.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Note

Ignore the warning about unapplied database migrations for now; we'll deal with the database shortly.

Now that the server's running, visit http://127.0.0.1:8000/ with your Web browser. You'll see a "Congratulations!" page, with a rocket taking off. It worked!