- Notifications
You must be signed in to change notification settings - Fork5
Archived in favor ofhttps://github.com/jayhale/vercel-django-example
jayhale/now-django-example
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
$ mkdir now-django-example$ cd now-django-example$ pip install Django$ django-admin startproject now_app .
$ python manage.py startapp example
Add the new app to your application settings (now_app/settings.py
):
# settings.pyINSTALLED_APPS= [# ...'example',]
Be sure to also include your new app URLs in your project URLs file (now_app/urls.py
):
# now_app/urls.pyfromdjango.urlsimportpath,includeurlpatterns= [ ...path('',include('example.urls')),]
Add the code below (a simple view that returns the current time) toexample/views.py
:
# example/views.pyfromdatetimeimportdatetimefromdjango.httpimportHttpResponsedefindex(request):now=datetime.now()html=f''' <html> <body> <h1>Hello from Zeit Now!</h1> <p>The current time is{now}.</p> </body> </html> '''returnHttpResponse(html)
Add the code below to a new fileexample/urls.py
:
# example/urls.pyfromdjango.urlsimportpathfromexample.viewsimportindexurlpatterns= [path('',index),]
Start a test server and navigate tolocalhost:8000
, you should see the index view you justcreated:
$ python manage.py runserver
Create a new filenow.json
and add the code below to it:
{"version":2,"name":"now-django-example","builds": [{"src":"now_app/wsgi.py","use":"@ardnt/now-python-wsgi","config": {"maxLambdaSize":"15mb" } }],"routes": [ {"src":"/(.*)","dest":"now_app/wsgi.py" } ]}
This configuration sets up a few things:
"src": "now_app/wsgi.py"
tells Now thatwsgi.py
contains a WSGI application"use": "@ardnt/now-python-wsgi"
tells Now to use thenow-python-wsgi
builder (you canread more about the builder athttps://github.com/ardnt/now-python-wsgi)"config": { "maxLambdaSize": "15mb" }
ups the limit on the size of the code blob passed tolambda (Django is pretty beefy)"routes": [ ... ]
tells Now to redirect all requests ("src": "/(.*)"
) to our WSGIapplication ("dest": "now_app/wsgi.py"
)
Thenow-python-wsgi
builder will look for arequirements.txt
file and willinstall any dependencies found there, so we need to add one to the project:
# requirements.txtDjango==2.2.4
First, update allowed hosts insettings.py
to include.now.sh
:
# settings.pyALLOWED_HOSTS= ['.now.sh']
Second, get rid of your database configuration since many of the libraries django may attempt toload are not available on lambda (and will create an error when python can't find the missingmodule):
# settings.pyDATABASES= {}
With now installed you can deploy your new application:
$ now> Deploying now-django-example under jayhale...> Success! Deployment ready [57s]
Check your results by visitinghttps://zeit.co/dashboard/project/now-django-example
About
Archived in favor ofhttps://github.com/jayhale/vercel-django-example