Advertisement
mbratanov

Automated Django project creation

Feb 10th, 2025
28
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.93 KB | None | 0 0
  1. import os
  2. import subprocess
  3. import sys
  4. import shutil
  5.  
  6. def run_command(command):
  7.     """Runs a shell command and prints the output."""
  8.     process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
  9.  
  10.     for line in process.stdout:
  11.         print(line)
  12.  
  13.     process.wait()
  14.  
  15.     if process.returncode != 0:
  16.         error_output = process.stderr.read()
  17.         print(f"\n[-] Error while running: {command}\n{error_output}")
  18.         sys.exit(1)
  19.  
  20.  
  21. def check_pipenv():
  22.     """Ensures pipenv is installed."""
  23.     print("[+] Checking if pipenv is installed...")
  24.     if not shutil.which("pipenv"):
  25.         print("pipenv not found. Installing it now...")
  26.         run_command("pip install --user pipenv")
  27.     else:
  28.         print(shutil.which("pipenv"))
  29.  
  30. def get_command_prefix():
  31.     """Returns the command prefix for pipenv based on OS."""
  32.     if os.name == "nt": # if OS is Windows
  33.         return "python -m pipenv"
  34.     return "pipenv" # if OS is Linux/macOS
  35.  
  36. def create_django_project(base_dir, project_name):
  37.     """Automates Django project creation using pipenv."""
  38.     check_pipenv()
  39.  
  40.     cmd_prefix = get_command_prefix()
  41.  
  42.     # Define project path and create project directory
  43.     project_path = os.path.join(base_dir, project_name)
  44.     os.makedirs(project_path, exist_ok=True)
  45.     os.chdir(project_path)
  46.  
  47.     # Set up a pipenv environment and install Django
  48.     print("[+] Setting up virtual environment with pipenv...")
  49.     # run_command("python -m pipenv install django")
  50.     run_command(f"{cmd_prefix} install django")
  51.  
  52.     # Create Django project inside the project directory
  53.     print("[+] Creating Django project...")
  54.     # run_command(f"python -m pipenv run django-admin startproject {project_name} .")
  55.     run_command(f"{cmd_prefix} run django-admin startproject {project_name} .")
  56.  
  57.     # Prompt user to create an application
  58.     create_app = input("\nDo you want to create a Django app? (yes/no): ").strip().lower()
  59.     if create_app.lower() in ["yes", "y"]:
  60.         app_name = input("Enter your Django app name: ").strip()
  61.         if app_name:
  62.             run_command(f"{cmd_prefix} run django-admin startapp {app_name}")
  63.             print(f"\n[+] Django app '{app_name}' created successfully!")
  64.         else:
  65.             print("[-] App name cannot be empty. Skipping app creation.")
  66.  
  67.     print(f"\n[+] Django project '{project_name}' created successfully at {project_path}!")
  68.     print("To start development:\n")
  69.     print(f"  cd {project_name}")
  70.     print(f"  {cmd_prefix} shell         # Activate environment")
  71.     print("  python manage.py runserver  # Start Django server")
  72.  
  73. if __name__ == "__main__":
  74.     base_directory = os.getcwd()
  75.     project_name = input("Enter your Django project name: ").strip()
  76.     if not project_name:
  77.         print("[-] Project name cannot be empty.")
  78.         sys.exit(1)
  79.  
  80.     create_django_project(base_directory, project_name)
  81.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement