[每周一更]-(第53期):Python3和Django环境安装并搭建Django

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

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中下载源码安装
  1. 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

  1. ./configure --prefix=/usr/local/python365 --with-ssl

(这个文件夹python36需要自行创建,格式自定义,这里为了区分小的版本号执行configure文件,此文件有两个功能:1、让用户选定编译特性;2、检查编译环境。configure执行后将生成MakeFile文件。)

  1. make(编译程序)
  2. make install(编译安装)
    5.安装完成,常见python36的链接

ln -s /usr/local/python36/bin/python3 /usr/bin/python3

6.下载pip (pip install --upgrade pip 更新自己)
最新pip版本

https://files.pythonhosted.org/packages/73/8e/7774190ac616c69194688ffce7c1b2a097749792fea42e390e7ddfdef8bc/pip-20.2.2.tar.gz

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。
相关推荐
懒大王爱吃狼30 分钟前
Python教程:python枚举类定义和使用
开发语言·前端·javascript·python·python基础·python编程·python书籍
秃头佛爷2 小时前
Python学习大纲总结及注意事项
开发语言·python·学习
深度学习lover3 小时前
<项目代码>YOLOv8 苹果腐烂识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·苹果腐烂识别
paopaokaka_luck4 小时前
【360】基于springboot的志愿服务管理系统
java·spring boot·后端·spring·毕业设计
API快乐传递者4 小时前
淘宝反爬虫机制的主要手段有哪些?
爬虫·python
码农小旋风5 小时前
详解K8S--声明式API
后端
Peter_chq5 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
Yaml45 小时前
Spring Boot 与 Vue 共筑二手书籍交易卓越平台
java·spring boot·后端·mysql·spring·vue·二手书籍
小小小妮子~5 小时前
Spring Boot详解:从入门到精通
java·spring boot·后端
hong1616886 小时前
Spring Boot中实现多数据源连接和切换的方案
java·spring boot·后端