Python和Django 的安装
Python和Django 兼容情况
django 1.11.x
python 2.7 3.4 3.5 3.6 LTS
python
目前在用版本
- Python 3.6.5 2018-03-28 更新
- Python 2.7.15 2018-05-01 更新
- Python 2.7.5 2013-05-12 更新
python和python3安装pip
同时安装上 python2.7.18、python3.11.0 ,将python3.11.0改为python3,运行如下命令得到对应的pip版本
-
pip --version
-
pip3 --version
python -m pip install --upgrade pip
python3 -m pip install --upgrade pip
python2.7 安装pip
-
安装setuptools
python setup.py install -
安装pip
python setup.py install
window下载
wget https://www.python.org/downloads/release/python-365
推荐直接安装方式安装 https://www.python.org/downloads/windows/
windows中 pip下载
https://pypi.python.org/pypi/pip#downloads
在 pip中文件夹中 使用 python setup.py install
报错:
ModuleNotFoundError: No module named 'setuptools'
缺少组件,setuptools http://pypi.python.org/pypi/setuptools。
报错:
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
需要安装 openssl-devel组件 ,yum install openssl-devel
centos中下载源码安装
- wget --no-check-certificate https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
解压: tar -xzvf Python-3.6.5.tgz
- ./configure --prefix=/usr/local/python365 --with-ssl
(这个文件夹python36需要自行创建,格式自定义,这里为了区分小的版本号执行configure文件,此文件有两个功能:1、让用户选定编译特性;2、检查编译环境。configure执行后将生成MakeFile文件。)
- make(编译程序)
- make install(编译安装)
5.安装完成,常见python36的链接
ln -s /usr/local/python36/bin/python3 /usr/bin/python3
6.下载pip (pip install --upgrade pip 更新自己)
最新pip版本
wget --no-check-certificate https://github.com/pypa/pip/archive/10.0.1.tar.gz
7.安装pip
python3 setup.py install
8.创建链接
ln -s /usr/local/python36/bin/pip /usr/bin/pip3
9.升级pip
python3 -m pip install --upgrade pip
pip install --upgrade pip
安装mysql扩展
pip3 install pymysql
错误汇总
1.zipimport.ZipImportError: can't decompress data; zlib not available 安装pip的时候报错.
缺少zlib 的相关工具包导致
yum -y install zlib*
5.修改PATH环境变量,以能够识别此程序的二进制文件路径;
修改/etc/profile文件,在文件中 添加
export PATH=$PATH:/path/to/somewhere#记得是可执行文件所在的目录,路径中不要包含可执行文件。
然后执行
source /etc/profile #是我们的修改生效
查看版本
python -V
pip -V
django
django 1.0版本中最后一个版本 Until at least April 2020
基于python3安装的pip3安装django
pip3 install Django==1.11.14
查看版本
import django
django.VERSION
创建第一个django项目
使用 django-admin.py 来创建 HelloWorld 项目:
django-admin.py startproject HelloWorld
最新版的 Django 请使用 django-admin 命令:
django-admin startproject HelloWorld
创建完成后我们可以查看下项目的目录结构:
cd HelloWorld/
.
|-- HelloWorld
| |-- __init__.py
| |-- settings.py
| |-- urls.py
| `-- wsgi.py
`-- manage.py
目录说明:
- HelloWorld: 项目的容器。
- manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。
- HelloWorld/init.py: 一个空文件,告诉 Python 该目录是一个 Python 包。
- HelloWorld/settings.py: 该 Django 项目的设置/配置。
- HelloWorld/urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站"目录"。
- HelloWorld/wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。
接下来我们进入 HelloWorld 目录输入以下命令,启动服务器:
python3 manage.py runserver 0.0.0.0:8000
访问成功如下:
It worked!
Congratulations on your first Django-powered page.
Next, start your first app by running python manage.py startapp [app_label].
You're seeing this message because you have DEBUG = True in your Django settings file and you haven't configured any URLs. Get to work!
如果报错:
DisallowedHost at / Invalid HTTP_HOST header:
于是就去django-admin.py startproject project-name创建的项目中去修改 setting.py 文件:
ALLOWED_HOSTS = ['*'] #在这里请求的host添加了*
启动django后,不能访问,报400错误。
原因:没有开启允许访问
处理:编辑HelloWorld目录下setting.py ,把其中的
ALLOWED_HOSTS=[]改成ALLOWED_HOSTS=['*'] ##* 表示任意地址。
设置完还报错的话,有一个原因需要将端口加入到安全组.
将django默认是的sqlite3 数据库改为mysql
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
改为
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django',
'USER':'root',
'PASSWORD':'hmxMENG224',
'HOST':'127.0.0.1',
'PORT':'3306',
}
然后在项目的__init__.py文件下输入
import pymysql
pymysql.install_as_MySQLdb()
CREATE DATABASE 数据库名;
CREATE TABLE `f_user` (
`uid` bigint(11) NOT NULL AUTO_INCREMENT,
`appid` char(15) DEFAULT NULL COMMENT '该用户所属机构',
`phone` varchar(11) NOT NULL COMMENT '用户登录手机号',
`uname` varchar(20) DEFAULT NULL,
`passwd` varchar(50) NOT NULL COMMENT '登录密码',
`create_time` int(11) NOT NULL COMMENT '账号创建时间',
`update_time` int(11) NOT NULL COMMENT '账号创建时间',
`isused` tinyint(4) DEFAULT '1' COMMENT '1为有效,0为无效(已删除)',
PRIMARY KEY (`uid`),
KEY `appid` (`appid`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
视图和 URL 配置
在先前创建的 HelloWorld 目录下的 HelloWorld 目录新建一个 view.py 文件,并输入代码:
from django.http import HttpResponse
def hello(request):
return HttpResponse("Hello world ! ")
接着,绑定 URL 与视图函数。打开 urls.py 文件,删除原来代码,将以下代码复制粘贴到 urls.py 文件中:
from django.conf.urls import url
from . import view
urlpatterns = [
url(r'^$', view.hello),
]
也可以改一种访问方式
from django.conf.urls import url
from . import view
urlpatterns = [
url(r'^hello$', view.hello),
]
注意:项目中如果代码有改动,服务器会自动监测代码的改动并自动重新载入,所以如果你已经启动了服务器则不需手动重启。
url() 函数
Django url() 可以接收四个参数,分别是两个必选参数:regex、view 和两个可选参数:kwargs、name,接下来详细介绍这四个参数。
- regex: 正则表达式,与之匹配的 URL 会执行对应的第二个参数 view。
- view: 用于执行与正则表达式匹配的 URL 请求。
- kwargs: 视图使用的字典类型的参数。
- name: 用来反向获取 URL。