一、linux下安装Django
1.安装python
Ubuntu18.04 系统内自带Python3.6,没有python的可以装一个,Django 2.1版本兼容Python 3.5、3.6、3.7;Django 3.0版本兼容Python 3.6、3.7、3.8,选择安装Python3.7:
(1)在官网 下3.7.7的版本;
(2)放在VM的共享文件夹中了,所以copy到新建的python3文件夹中:
sudo cp -r /mnt/hgfs/share/Python-3.7.7.tar.xz /usr/local/Python3
进行解压 tar -xvf xxx
(3)进到解压完的文件中:./configure
sudo apt-get update
sudo apt-get upgrade
sudo make
sudo make install
出现问题1:zipimport.ZipImportError: can’t decompress data; zlib not available in Linux
解决:缺少zlib的相关工具包那就安装相关依赖包:sudo apt-get install zlib*
(4)装完查看python版本:python 发现还是老版本2.7的。输入exit()出来;
输入python3可以看到新的版本已经装上,把环境切换成新版本:
用: sudo rm /usr/bin/python 删除原来的python
link解决: sudo ln -s usr/local/bin/python3 /usr/bin/python
2.创建python的虚拟环境
Virtualenv是一个Python虚拟环境工具,可用来建立多个相互独立,互不影响的Python工作环境。
(1)下个pip工具来安装Virtualenv:
sudo apt install python3-pip
pip install virtualenv
出错1:
解决:修改 /usr/bin/pip 文件
from pip import main
if name == ‘main’:
sys.exit(main())
改为:
from pip import main
if name == ‘main’:
sys.exit(main._main())
出错2:Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host=‘pypi.org’, port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError(“Can’t connect to HTTPS URL because the SSL module is not available.”)) - skipping
解决:是url源的问题,换成国内的pip源就。我使用的是:
pip install virtualenv -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
–trusted-host pypi.douban.com 表示将指定网站设置为信任服务器
出错3:WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘NewConnectionError(’
解决:自己的虚拟机vm联网问题,ubuntu上网出错,恢复正常上网就行了
出错4:
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
解决:更新 pip 版本
pip install --upgrade setuptools
出错5:ModuleNotFoundError: No module named '_ctypes
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
解决:受够了pip安装,改用sudo apt-get install python3-virtualenv 安装
(2)Virtualenv安装好之后,就是给自己的项目创建一个虚拟环境。也可以使用下面的命令创建指定Python版本的虚拟环境。
virtualenv --python=/usr/bin/python3 pyweb
#指定创建一个版本为python3 的虚拟环境,#pyweb 为虚拟环境目录名,目录名自定义.在哪个目录下创建,就会在该目录下生成一个名为pyweb的文件夹,
结果发现python的版本怎么还是之前下的3.6呢:
而上面下的python3.7.7呢?which查看一下:
换个路径重建一个环境:virtualenv --python=/usr/local/bin/python3.7 py377webdjiango
出错1:这几个工具(pip,wheel)没下成功:OSError: Command /home/lan/py377webdjiango/bin/python3.7 - setuptools pkg_resources pip wheel failed with error code 1
发现啥也没,除了工具,activate之类的也没。应该是把虚拟环境装在对应的python3.6下了,选择直接把python3.7.7给删了,用python3.6重新上面步骤再装过pip,并用pip重装virtualenv成功。
补:如果python3.7用不了virtualenv没关系其自带创建虚拟环境 venv的功能,用起来区别也不大,只是不支持python2:
python3.7 -m venv py377django
按virtualenv --python=/usr/bin/python3 pyweb创建虚拟环境:
进入创建的虚拟环境pyweb的bin目录下,然后使用如下命令启动:source activate
启动成功之后就会在命令行前出现一个pyweb,这就说明虚拟环境启动成功。退出环境命令:deactivate
3.安装数据库:mysql
(1)安装MySQL服务器、客户端和依赖库
sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev
(2)查看mysql版本
(3)进入MySQL的Shell:sudo mysql
退出Shell:exit;
3.安装一个IDE,用起来会比较容易:pycharm
官网下载
但是本人的vm给的空间不多,就用visualstudio或者自带IDE
4.安装Django
(1)进入virtualenv虚拟环境里,安装最新版:
pip install django
出错1:ERROR: Exception: Traceback (most recent call last): File "/home/lan/pyweb/……
解决:照以上的提示目录,进入该目录下安装:……/dite-packages/pip
成功,可查看版本:python -m django --version ,or:/bin目录下:pip list
记Django3.0.7……
5.开始helloDjango
(1)进到环境下创建一个项目叫DjangoPj1
(pyweb) lan@lan-virtual-machine:~/pyweb/bin$ django-admin startproject DjangoPj1
(2)目录下可见项目:
DjangoPj1/
manage.py
DjangoPj1/
init.py
settings.py
urls.py
asgi.py
wsgi.py
解释:
DjangoPj1: 第一个DjangoPj1为根目录,整个项目的容器。
manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。
DjangoPj1:第二个DjangoPj1目录下装的都是项目的python文件包
DjangoPj1/init.py: 一个空文件,用于告诉 Python 该目录是一个 Python 包。
DjangoPj1/settings.py: 该 Django 项目的设置/配置文件。
DjangoPj1/urls.py: 该 Django 项目的 URL 路由声明
DjangoPj1/asgi.py: 一个ASGI 兼容的 Web 服务器的入口
DjangoPj1/wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口
(3)第一层DjangoPj1 目录下指定端口(4433)启动服务器:
python manage.py runserver 4433
【提示】:You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.Run ‘python manage.py migrate’ to apply them.(17个未迁移应用,项目没有创建app)
先不管:浏览器键入:http://127.0.0.1:4433/
(4)项目下创建一个app:
python manage.py startapp hellodjango
可见hellodjango目录下:
admin.py apps.py init.py migrations models.py tests.py views.py
(5)将创建的app添加到项目中的setting配置中:
打开Djangopj1目录下的setting.py,其中的INSTALLED_APPS
INSTALLED_APPS = (
‘django.contrib.admin’,
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.messages’,
‘django.contrib.staticfiles’,
)
Django默认的6个内置应用程序之外添上刚刚创建的app。
(6)创建view
打开hellodjango中的 views.py 文件,并添加以下代码:
from django.http import HttpResponse
def hello(request):
return HttpResponse(‘Hello World!’)
(7)要让Django调用这个view,修改 Djangoprj1目录下的urls.py 文件:
from django.conf.urls import url
from django.contrib import admin
from hellodjango import views
urlpatterns = [
url(r’^admin/’,admin.site.urls),
url(r’^KaTeX parse error: Expected group after '^' at position 34: …='hello')
]
这里用^? 表示匹配一个空路径(主页)
admin.site.urls参考include的运用
(8)运行后打开浏览器即可:python manage.py runserver 4433