Have you ever encountered this error while developing in Django?
You're accessing the development server over HTTPS, but it only supports HTTP.
If you're used to accessing your development server via http://localhost:8000, this error can be frustrating - especially after updating firewall rules that enforce HTTPS connections. Instead of reverting security settings, there's a better solution: Ngrok.
Ngrok is a powerful tool that exposes local applications to the internet without complex network configurations like port forwarding or DNS setup. Read more about ngrok in their official documentation.
Before we begin, ensure you have:
Before we install anything, activate your virtual environment then install the Python wrapper for ngrok:
pip install pyngrok pip freeze > requirements.txt
Add ngrok's domain to your allowed hosts list in your project's settings.py:
# settings.py ALLOWED_HOSTS = ['localhost', '127.0.0.1', '.ngrok-free.app']
This allows Django to accept requests from ngrok's dynamic URLs (*.ngrok-free.app). Django will not generate any errors even though we can't predict the random string part of the URL.
In your project's root directory:
python manage.py runserver
Note: Windows users can use py manage.py runserver
ngrok config add-authtoken YOUR_TOKEN_HERE
Start the tunnel:
ngrok http 8000
Ensure that the ngrok and Django server ports are the same. The default port usually is 8000.
You should see output similar to:
Account Your Name (Plan: Free) Version 3.19.0 Region United States (us) Latency Your Latency Web Interface An Unsecure HTTP address Forwarding https://[random-id].ngrok-free.app -> http://localhost:8000
Access your Django application using only the HTTPS URL provided by ngrok on your console window. It will look similar to the following:
https://[random-id].ngrok-free.app
Ngrok isn't just for solving HTTPS issues. It's valuable for:
Want to learn more about web development? Check out my other articles:
Thanks for your time and happy coding! Share your projects in the comments section.
The above is the detailed content of Exposing Your Django Project to the Internet Using Ngrok. For more information, please follow other related articles on the PHP Chinese website!