If you’re open to using tmux, you can activate the virtualenv before creating your session. In addition to that, if you’re okay with detaching from the session instead of ending it, well, that’s even better than scripting it to start up how you want it!
Of course, that’s still possible, too:
#!/bin/sh
tmux new-window python3 manage runserver
# or
tmux new-window 'python3 manage runserver; zsh -i'
And you can bind all your tasks to keys in tmux.