Linux 下 python 开发环境部署(有基础)|学习笔记

简介: 快速学习 Linux 下 python 开发环境部署(有基础)

开发者学堂课程【Python 开发基础入门Linux 下 python 开发环境部署(有基础)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/556/detail/7646


Linux 下 python 开发环境部署(有基础)


目录:

一、Python 课前须知

二、Python 开发 pyenv 安装

三、pyenv 第一个命令

四、Virtualenv 虚拟环境

五、jupyter 安装

六、导出包

 

一、课前须知

课前预习:

视情况而定,预习相关内容

课堂中:

课上认真听讲,截图、写临时想法、记录脑子中的问题,可以通过截屏的方式

课堂后:

课后自己整理笔记,知识总结整理过程(云笔记、思维导图等),知识整理以及思路梳理,按照自己的方式进行整理,便于复习

作业:

随堂练习

基础知识习题

进阶知识习题

项目实战编码(实战部分只提供基本实现):至少独立完成项目代码

提问

先保留问题,记录下来,下课测试,对问题有了了解后,解决不了再提问,提高提问水平和效率,可以自己先思考

目标

写20000行有效代码


二、开发简介

荷兰人 Guido van Rossum,2005年加入 Google,2013年加入 Dropbox

1989年,创立了 Python 语言,1991年初发布第一个公开发行版

他是英国BBC喜剧《Monty Python's Flying Circus》的忠实粉丝  

*Python哲学

>>>import this

显示----python之禅

*版本

*2.x发展到了2.7

*3.X

发展到了3.6

3.x始自2008年,3.5版本发布于2015年

版本不是问题,写好代码在于自己本身。学好一门语言,在于积累,思想转化为编程逻辑

*2.x和3.x区别

语句函数化,例如print(1,2)打印出1 2,但是2.x中意思是print语句打印元组,3x中意思是函数的2个参数。

整除,例如1/2和1//2,3.x版本中/为自然除d 3.x中raw. input重命名为input,不再使用raw_ input

round函数,在3.x中i.5的取整变为距离最近的偶数0字符串统一使用Unicode,2.x需要手动声明编码个数

异常的捕获、抛出的语法改变

直接学习3.x版本

1. 开发环境-Pyenv

* Python 多版本管理工具

*管理 Python 解释器

*管理 Python 版本

*管理 Python 的虚拟环境

*官网 https:/github.com/pyenv/pyeny

Jupyer偏数据分析pandas/numpy等科学计数法

Python具有多版本多版本问题

启动 pyenv,curl 模拟浏览器,通过浏览器方式打开文件,例如一个 shell 脚本,交给 bash 执行

#!/usr/bin/env bash

set -e

[ -n "$PYENV_DEBUG"]& & set -xif [-z "$PYENV_ROOT"]; thenPYENV_ROOT="$ 《HOME} / .pyenv"//创建隐藏目录

Fi

shell=""$1"

if [ -z "$shell"]; then

shell="$(ps c -p "$PPID"-o 'ucomm=' 2>/dev/null ll true)"shell="$ { shell##一}"

shell="$ { shell号号*}"

shell="$ ( basename "$ { shell :-$SHELL}") "

Fi

colorize ( ) {

if [ -t 1 ]; then printf "\e [ %sm8sle [m" "$1""$2"else echo -n "$2"

Fi

checkout () {

[ -d "$2" ] ll git clone --depth 1 "$1""$2"

if ! command -v git 1>/dev/ null 2>&1; then

echo "pyenv: Git is not installed,can't continue." >&2exit 1

Fi

if [ -n "${USE_GIT_URI}"]; thenGITHUB="git:7lgithub.com"

else

GITHUB="https:/l github.com"

Fi

checkout "${GITHUB}/pyenv/pyenv.git"

"${PYENV ROOT ]"

checkout "$(GITHUB}/pyenv/pyenv-doctor.git""${ PYENv_RooT} /plugins/pyenv-doctor"

checkout"${GITHUB}/pyenv/pyenv-installer.git" "${ PYENV_RooT} /plugins/pyehv-install

//虚拟环境插件

checkout"$(GITHUB)/pyenv/pyenv-update.git""${PYENV_Roor}/plugins/pyenv-update"

checkout"$(GITHUB}/pyenv/pyenv-virtualenv.git""${PYENV RooT}/plugins/pyenv-virtualenv"

checkout"${GITHUB}/pyenv/pyenv-which-ext.git""${PYENv_RooT}/plugins/pyenv-which-ext"

把远程的项目文件放入文件,加载到环境目录

1. Pyenv安装

*操作系统准备

*准备Linux最小系统即可。

*如果在虚拟机中克隆, MAC地址会变,需要重启服务或机器

*这里使用CentOS 6.5+pyenv安装方式

不需要安装界面,直接按照命令行最小化安装,可节省资源

image.png

克隆虚拟机,选择配置好的机器,创建完整克隆

image.png

关闭防火墙

配置ntp,配(多服务互联,时间需要同步,服务器集群)

时间中心服务器时间配置需要统一一致,连接北斗等系统

配置etho(配置网络)

SSH配置(方便xshell等外接软件连接虚拟机)

配置yum源(可以选择阿里云)

虚拟网卡的硬件地址,需要网卡地址绑定修改,在启动虚拟机后,输入vim /etc/sysconfig/network-scripts/ifcfg-eth0

将dscp更改为static静态网络

修改ip地址,与克隆前不一致即可

修改网关,与NAT设置一致即可

子网IP需要设置

最小网络配置文件设置

DEVICE:etho

TYPE:Ethernet

DMBOOT:static

IPADDR:自定义

NETMASK:255.255.255.0

GETWAY:需要自定义

3.pyenv安装方式

Git安装

1、安装git

# yum install git -y

2、安装Python编译依赖

pyenv就地编译安装python,使用gcc等依赖库,缺乏则编译不了

# yum -y install gcc make patch gdbm-devel openssl-devel sqlite-devel readline-develzlib-devel bzip2-devel

//安装不建议使用root用户安装

3、创建用户python

# useradd python

#passwd python

#su python 切换为python用户,yum需要root用户安装

4、使用python用户登录后安装Pyenv

//在线快速插件安装,也可以使用离线安装包,在线速度较慢

$ curl -Lhttps://github.com/pyenv/ pyenv- installer/raw/ master/bin/ pyenv- installer |bash

下载的pyenv-installer 是一个shel脚本。

在线连接出现问题使用offilne解压安装配置解决

注意:

1.在 https://github.com/pyenv/pyenv-ihstallerpyenv- installer 有安装文档

2.如果cur出现curl: (35) SSL connect error , 是nss版本低的问题,更新它。

可能需要配置一个有较新包的yum源

外部源添加入yum

#vim /etc/yum.repos.d/dvd.repo

[dvd]

Name=CentOS-$releasever -Base

Baseurl=file:///media/dvd1

=file:///media/dvd2

Gpgcheck=0

[updates]

name CentoS-Updates

baseurl=https ://mirrors . aliyun. com/ centos/6.9/os/x86_ 64gpgcheck=0

#yum repolist

然后更新nSS

# yum update nss

安装完成会有一个提示

5、在python用戸的~/.bash profile中追加

# Load pyenv automatically by adding

#the fol lowing to ~/ .bash profile:

//添加到家目录配置文件下

export PATH=" /home/ python/ .pyenv/bin: $PATH"eval "$ (pyenv init -) "

eval "$ (pyenv vi rtualenv-init -) "

eval "$ (pyenv vi rtualenv-init -) "

export PATH="/home python/ . pyenv/bin:$PATH"

eval "$(pyenv init -)"

eval "$(pyenv virtualenv-init - )"

//使用source刷新配置文件生效

$ source ~/ .bash profile

当用户启动的时候,会执行用户的.bash_ profile中的脚本,就会启动pyenv。

添加到以下文件中

.bash profiie

Get the aliases andfunetionsif[-f~f .bashrc ] ; then

~f .bashrc

Fi

0ser specific environment and startup prograns

PATH=$PATH:$HOMEfbin

export PATH

export PATH=" / home / python/ .pyenv/bin : $PATH"eval "$ (pyenv init -) "

eval "$ (pyenv virtualenv-init -)"

#Python -v

//pyenv命令

some useful pyenv commands are:

Commands

List all available pyenv commands

Local:

set or show the local application-specific Python version

Global:

set or show the global Python version

Shell:

set or show the shell-specific Python version

Install:

Install a Python version using python-build

Uninstall:

Uninstall a specifc Python version

Rehash:

Rehash pyenv shims (run this after installing executables)

Version:

show the current Python version and its origin

Versions:

List all Python versions available to pyenv

Which:

Display the full path to an executable

Whence:

List all Python versions that contain the given executable

4.第一个命令install

Install

[python@node~]$pyenv help install

Usage: pyenv install[-f][-kvp]

pyenv install[-f][-kvp] pyenv jinstall -l|--list

pyenv install --version-l/--list

List all available versions

-f/--force

Install even if the version appears to be installed already

-s/--skip-existing skip if the version appears to be installed already

python-build options:

-k/--keepKeep source tree in $PYENV_BUILD_ROOT after installation(defaults to $PYENV_ROOT /sources)

-pl--patch

Apply a patch from stdin before building

-v/--verboseverbose mode: print compilation status to stdout--version

show version of python-build

-g /--debug

Build a debug version

For detailed information on installing Python versions with

python-build, including a list of environment variables for adjustingcompilation,see:

https: //github.com/pyenv/pyenv#readme

$ pyenv help install列出所有可用版本

$ pyenv install--list

在线安装指定版本

$ pyenv install 3.5.3

$ pyenv versiors

安装可能较慢,为了提速,可是选用cache方法。

使用缓存方式安装

#mkdir cache

将install中的安装包拖入cache中

~/ Dvenv家目录下新建cache目录。放入下载好的待安装版本的文件。

version意思当前我所处的Python环境是是什么。

使用缓存方式安装

在~/.pyenv目录下,新建cache目录,放入下载好的待安装版本的文件。不确定要哪一个文件 ,把下载的3个文件都放进去。

#使用cache安装pyenv

$ pyenv install 3.5.3 -V

#离线安装包需要放入固定位置,可反复使用

请用客户端再打开两个会话窗口。提前安装备用pyenv的python版本控制

version显示当前的python版本

versions显示所有可用的python版本,和当前版本名

global全局设置

Shell 当前shell有关事物

Local本地有关事物

$ pyenv global 3.5.3

pyenv控制的窗口中都是3.5.3的python版本了。

使用global是作用于非root用户python用户上, 如果是root用户安装,请不要使用global,否则影响太大。比如,这里使用的Cent0S6 5就是Python2.6,使用了glbal就成了3.x,会带来很不好的影响。

$ pyenv global system

Global影响很大

函数外部定义的变量(即global范围),在函数内部可以引用,但是不能修改。

如果函数中要使用一个外层(这里是global)的变量,若函数内部使用global标记该变量,那么在函数内尽可以“读取”该变量;若要在函数内修改该global变量,则需要用global语句,函数对该变量的修改也会体现到global作用域。

shell会话设置:

影响只作用于当前会话

#pyenv shell 3.5.3

#pyenv versions 改变

#python -V

Python版本改变,仅仅在当前用户改变

$ pyenv she 3.5.3

local本地设置

使用pyenv local设置从当前工作目录开始向下递归都继承这个设置。

local命令只会对当前的文件夹和其子目录中的版本起作用 ,其他的目录不起作用

不同包依赖不同的版本,项目越大包越多,不方便管理


三、Virtualenv 虚拟环境

软件包源中的软件包数量巨大,版本多样,所以需要借助于软件源管理工具,例如 pip、conda、Pipenv、Poetry 等

pip 是最常用的包管理工具,通过

pip install  命令格式来安装软件包,使用的是 pypi 软件包源

conda 多用作科学计算领域的包管理工具,功能丰富且强大,使用的软件包源是 Anaconda repository 和 Anaconda Cloud,conda 不仅支持 Python 软件包,还可以安装 C、C++ 、R 以及其他语言的二定制软件包。除了软件包管理外,还能提供相互隔离的软件环境。

Pipenv 是 Kenneth Reitz 在2017年1月发布的Python依赖管理工具,现在由PyPA维护。 会自动帮你管理虚拟环境和依赖文件,并且提供了一系列命令和选项来帮助你实现各种依赖和环境管理相关的操作

Poetry 和 Pipenv 类似,是一个 Python 虚拟环境和依赖管理工具,另外它还提供了包管理功能,比如打包和发布。你可以把它看做是 Pipenv 和 Flit 这些工具的超集。它可以让你用 Poetry 来同时管理 Python 库和 Python 程序

很多包管理工具不仅提供了基本的包管理功能,还提供了虚拟环境构建,程序管理的等功能

1. 为什么要使用虚拟环境 

因为刚才使用的环境都是一个公共空间,如果多个项目使用不同版本开发。

虚拟环境存在的意义只是为了将项目独立,使用虚拟环境的优势就是,该项目使用的第三方工具都需要在虚拟环境中使用pip命令安装,并且安装好的工具不影响系统已有的工具,同时系统中的其他项目也无法调用虚拟环境中安装的工具

2.python 版本

Python 版本指的是 Python 解析器本身的版本。

由于 Python3 不能与 Python2 兼容,而且两大阵营之争持续了很长时间,导致一些软件库需要设配两种版本的 Python,同时开发者可能需要在一个环境中,部署不同版本的 Python,对开发和维护造成了麻烦。

因此出现了版本管理器 Pyenv,类似于 nodejs 的 nvm,可以创建出相互隔离的 Python 环境,并且可以方便的切换环境中的 Python 版本,但和 Python 虚拟环境关系不大

3. python 包库

包库或者叫软件源是 Python 第三方软件的库的集合,或者市场,可以发布、下载和管理软件包,其中 pypi (Python Package Index) https://pypi.org/是官方指定的软件包库,基于其上的 pip 工具就是从这里查找、下载安装软件包的。为了提高下载速度,世界上有很多 Pypi 的镜像服务器,在国内也有多个软件源,例如阿里的软件源是:

http://mirrors.aliyun.com/pypi/simple。除此之外,还有其他软件源,如正对科学计算的 anaconda 的软件源

https://repo.anaconda.com/

4.python 包管理器

软件包源中的软件包数量巨大,版本多样,所以需要借助于软件源管理工具,例如 pip、conda、Pipenv、Poetry 等

pip 是最常用的包管理工具,通过

pip install  命令格式来安装软件包,使用的是 pypi 软件包源

conda 多用作科学计算领域的包管理工具,功能丰富且强大,使用的软件包源是 Anaconda repository 和 Anaconda Cloud,conda 不仅支持 Python 软件包,还可以安装 C、C++ 、R 以及其他语言的二定制软件包。除了软件包管理外,还能提供相互隔离的软件环境。

Pipenv 是 Kenneth Reitz 在2017年1月发布的Python依赖管理工具,现在由PyPA维护。Pipenv 会自动帮你管理虚拟环境和依赖文件,并且提供了一系列命令和选项来帮助你实现各种依赖和环境管理相关的操作.

Poetry 和 Pipenv 类似,是一个 Python 虚拟环境和依赖管理工具,另外它还提供了包管理功能,比如打包和发布。你可以把它看做是 Pipenv 和 Flit 这些工具的超集。它可以让你用 Poetry 来同时管理 Python 库和 Python 程序

很多包管理工具不仅提供了基本的包管理功能,还提供了虚拟环境构建,程序管理的等功能

5.pip 通用配置

pip是Python的包管理工具, 3.x的版本直接带了,可以直接使用。和yun-样为了使用国内镜像,如下配置。

Linux系统

$ mkdir ~/.pip

配置文件在~/.pip/pip.conf

[global]

index-url-https://mirrors.aliyun.com/pypi/simple/trusted-host-mirrors.aliyun.com

6.配置虚拟环境

安装virtualenv或者virtualenvwrapper-win,操作与pycharm中类似

虚拟环境只是为了将某个项目独立于系统中,该项目可以使用自己独享的一套解释器,第三方工具

激活虚拟环境时,只是为了使用pip安装独立的工具

退出虚拟环境后,安装的工具与虚拟环境就没有关系了

创建:

virtualenv 工具

在 python3.3 之前,只能通过 virtualenv 创建虚拟环境,首先需要安装 virtualenv

pip install virtualenv

安装完后,在当前目录下创建一个名为 myvenv 的虚拟环境:

virtualenv --no-site-packages myvenv

参数 --no-site-packages 的意思是创建虚拟环境时,不复制主环境中安装的第三方包,也就是创建一个 “干净的” 虚拟环境

virtualenv 还有很多参数,用于不同的使用场景,例如:

-p: 用于指定 Python 解析器,就是安装好的 Python 应用程序,默认为当前环境中的 Python

--no-pip:不需要安装 pip,默认为安装

--clear:如果创建虚拟环境的目录已经有了其他虚拟环境,清楚重建

venv 模块

Python3.3 之后,可以用模块 venv 代替 virtualenv 工具,好处是不用单独安装,3.3 及之后的版本,都可以通过安装好的 Python 来创建虚拟环境:

python -m venv myvenv

可以在当前目录创建一个名为 myvenv 的虚拟环境

venv 有些参数,不过相比 virtualenv 少了些,这里简单介绍几个:

--without-pip: 不需要安装 pip,默认为安装

--clear:如果创建虚拟环境的目录已经有了其他虚拟环境,清楚重建

因为 venv 是依附于一个 Python 解析器创建的,所以不需要指定 Python 解释器版本

激活

虚拟环境创建好后,需要激活才能在当前命令行中使用,可以理解成将当前命令行环境中 PATH 变量的值替换掉

通过 virtualenv 和 模块 venv 创建的虚拟环境,激活方式是一样的,即运行激活脚本

Windows 系统中,激活脚本路径是

\Scripts\activate.bat,如果是 powershell 命令行,脚本换成 Activate.ps1 , 注意将  换成你自己的虚拟环境目录.

Linux 系统中,激活脚本路径是 /bin/activate,默认脚本没有执行权限,要么设置脚本为可执行,要么用 source 命令执行,例如$ source myvenv/bin/activate

激活后,可以在命令行中看到虚拟环境标记,如上图

打印 PATH,命令如下:

Linux 下:

echo $PATH

Windows 下

echo %PATH%

可以看到创建的虚拟环境脚本目录被加载了最前面

退出

退出虚拟环境很简单,只需要执行 deactivate 命令就行,这个命令也在虚拟环境的脚本目录下,因为激活时,将脚本目录设置到 PATH 中了,所以可以直接使用.

退出虚拟环境相当于将 PATH 恢复成原来的

7. 虚拟环境作用

(1)版本隔离

(2)虚拟环境可以让系统Python环境保持纯洁,干净,避免包的混乱和版本的冲突。

(3)专为不同的项目搭建不同的环境,为每个项目使用虚拟环境可以保证项目只访问虚拟环境中的包,从而保持全局解释器的干净整洁,使其只作为创建虚拟环境的源。

(4)使用虚拟环境不需要管理员权限。

(5)多个虚拟环境同时进行,如同你拥有了多个Python解释器。

 

四、jupyter 安装及使用

#juptyer notebook --help

client-ca= (NotebookApp.ciient_ca)

Default: ''

The full path to a certificate authority certificate for sSL/TLs clientauthentication.

ransport=(KernelManager.transport)Default: 'tcp'

choices:[ 'tcp' , 'ipc']

og-level=(Appiication.log_level)Default: 30

choices: (0,10,20,30,40,50,'DEBUG','INFO',"WARN','Bset the log level by value or name .

ertfile=(NotebookApp.certfile)Default:''

The full path to an sSL/TLs certificate file.

To see all available configurables,use '--help-all)

Examples

jupyter notebook

start the notebook

jupyter notebook --certrl1e=mycert.petenter a password to protect the serverjupyter notebodk password

//添加密码,保护软件

#jupyer noyebook --password

Password:输入你设置的密码

//启动jupyter

#jupyter notebook

窗口界面安装会启动浏览器

//查看端口

[python@node site-packages]$ ss -tanl

don.etstateRecv-Q send-o

Local Address : Port

Peer Address : Port

LISTENo128

:: :22

: : :*

LISTENo128

* :22

*:*

T.TSTENo128

127.0.0.1:8888T

* :*

LisTENo128

: :1:8888

: : :*

LISTENo10o

: : l:25

: : :*

LISTENo10o

127.0.0.1:25

浏览器访问不了,需要查询选项,选择对应端口

1. Jupyter 概念

是基于WEB的交互式笔记本,其中可以非常方便的使用Python。安装Jupyter,也会安装ipython的.

Jupyter Notebook是一个Web应用程序,允许您创建和共享包含实时代码,方程,可视化和说明文本的文档。 用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等。

2.安装步骤

$ pip install jupyter

$jupyter notebook help

$ jupyter notebook --ip=8.0.0.0--no-browserss -tanl

 

五、导出包

虚拟环境的好处就在于和其他项目运行环境隔离。每一个独立的环境都可以使用pip命令导出已

首先从github上克隆项目

$ git clone https://github.com/pyenv/pyenv.git ~l.pyenv

$gitclone https://github.com/pyenv/pyenv-virtualenv.git ~/ .pyenv/plugins/pyenv-virtualenv

$ git clone https://github.com/pyenv/pyenv-update.git ~/.pyenv/plugins/pyenv-update$ git clone https: //github.com/pyenv/pyenv-which-ext.git ~/ .pyenv/plugins/pyenv-which-ext

可以把克隆的目录打包,方便以后离线使用。

$vim ~/.bash_profile

export PATH="/home/python/.pyenv/bin:$PATH"eval "$(pyenv init -)"

eval "$(pyenv virtualenv-init -)"

source ~/.bash_profile

相关文章
|
16天前
|
存储 数据库连接 API
Python环境变量在开发和运行Python应用程序时起着重要的作用
Python环境变量在开发和运行Python应用程序时起着重要的作用
61 15
|
28天前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
138 45
|
23天前
|
JSON 安全 API
如何使用Python开发API接口?
在现代软件开发中,API(应用程序编程接口)用于不同软件组件之间的通信和数据交换,实现系统互操作性。Python因其简单易用和强大功能,成为开发API的热门选择。本文详细介绍了Python开发API的基础知识、优势、实现方式(如Flask和Django框架)、实战示例及注意事项,帮助读者掌握高效、安全的API开发技巧。
48 3
如何使用Python开发API接口?
|
2月前
|
运维 监控 Linux
Linux系统之部署Linux管理面板1Panel
【10月更文挑战第20天】Linux系统之部署Linux管理面板1Panel
94 3
Linux系统之部署Linux管理面板1Panel
|
16天前
|
JSON API 数据格式
如何使用Python开发1688商品详情API接口?
本文介绍了如何使用Python开发1688商品详情API接口,获取商品的标题、价格、销量和评价等详细信息。主要内容包括注册1688开放平台账号、安装必要Python模块、了解API接口、生成签名、编写Python代码、解析返回数据以及错误处理和日志记录。通过这些步骤,开发者可以轻松地集成1688商品数据到自己的应用中。
30 1
|
22天前
|
数据采集 存储 JSON
Python爬虫开发中的分析与方案制定
Python爬虫开发中的分析与方案制定
|
29天前
|
数据可视化 开发者 Python
Python GUI开发:Tkinter与PyQt的实战应用与对比分析
【10月更文挑战第26天】本文介绍了Python中两种常用的GUI工具包——Tkinter和PyQt。Tkinter内置于Python标准库,适合初学者快速上手,提供基本的GUI组件和方法。PyQt基于Qt库,功能强大且灵活,适用于创建复杂的GUI应用程序。通过实战示例和对比分析,帮助开发者选择合适的工具包以满足项目需求。
85 7
|
1月前
|
算法 测试技术 开发者
性能优化与代码审查:提升Python开发效率
探讨了Python开发中性能优化和代码审查的重要性,介绍了选择合适数据结构、使用生成器、避免全局变量等性能优化技巧,以及遵守编码规范、使用静态代码分析工具、编写单元测试等代码审查方法,旨在帮助开发者提升开发效率和代码质量。
43 8
|
27天前
|
算法 测试技术 开发者
性能优化与代码审查:提升Python开发效率
性能优化与代码审查:提升Python开发效率
33 1
|
29天前
|
安全 数据库 开发者
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第26天】本文详细介绍了如何在Django框架下进行全栈开发,包括环境安装与配置、创建项目和应用、定义模型类、运行数据库迁移、创建视图和URL映射、编写模板以及启动开发服务器等步骤,并通过示例代码展示了具体实现过程。
43 2