一、Django是什么?
Django是python web开发中的一个常用应用框架。
可能很多小伙伴对web开发并不了解,下面我们就来简单梳理一下web应用的基本流程。能用图说明白的我们绝不废话,其基本流程如下图所示。
其中http服务器,用来接受用户请求,并将请求转发给Web应用框架进行处理。Web应用框架处理完以后再发送给http服务器,http服务器再返回给用户。
如果看到这儿,你还是不太清楚的话,你可以这样理解Django,“Django就是用来做网站后台的,是web开发中的一种框架”。
二、环境搭建
1.工具准备
(1)虚拟机软件 (2)LInux系统(这里以Ubuntu为例) (3)python3(3.5) (4)Pychram(2018.1.4) (5)MySQL(5.7)
2.虚拟环境
在搭建环境之前,我们需要先了解一下虚拟环境。
虚拟环境主要解决的是版本的问题。
例如,项目一用的是Django的1.1版本,项目二用的是Django的2.0版本,而python的大环境只允许一个版本出现这时怎么办呢?(Django1.1和Django2.0是有很大的区别的,它们的URL路由配置有很大的不同)
python大哥面对这种情况也是没有关系的~因为它有virtualenv? wrapper(virtual environment wrapper"虚拟环境扩展包"的缩写)。它可以为不同的版本创建不同的环境来使用。
3.创建虚拟环境
创建虚拟环境的常用命令集合如下:
#查看当前有哪些虚拟环境
workon
#创建虚拟环境??-p 用来制定python的版本 envname(为自定义的虚拟环境名称)
mkvirtualenv?-p?/usr/bin/python3?envname
#进入虚拟环境
workon?envname
#退出虚拟环境
deactivate
#删除虚拟环境
rmvirtualenv?envname
#安装django
pip?install?django
#查看当前python环境下的第三方库pip?list
(1)workon查看当前的虚拟环境都有哪些
可以看到此时,我们的虚拟环境共有“env2py"和”py3env“这两个。
(2)创建虚拟环境
我们使用如下命令创建一个名为”djtest2.1"的虚拟环境
mkvirtualenv?-p?/usr/bin/python?djtest2.1
xshell端查看如下:
可以看到? 我们已自动进入djtest2.1的虚拟环境,我们使用pip list?查看当前虚拟环境中的库。
(3)安装django库
我们使用pip install django来为虚拟环境安装django库
安装成功后,使用pip list进行查看,可以发现Django已安装在我们的虚拟环境中,版本为2.1.5。
值得注意的是:
在虚拟环境中 pip install 安装库不需要加sudo命令,而在非虚拟环境的Linux环境下使用pip install安装库则需要加sudo命令。
(4)创建项目
首先,创建名为“dj_project"的文件夹用来存储项目,创建后通过ls命令进行查看,是否建好。
mkdir?dj_project
创建界面如下:
创建后?使用cd命令进入”dj_project"文件夹
cd?dj_project
开始创建django项目,项目名称为“hello_django"
#hello_django为创建的django项目名称
django-admin?startproject?hello_django
界面如下:
安装"tree"查看文件结构
sudo?apt?install?tree
安装界面如下:
安装完成后,使用tree进行查看
我们可以看到,在项目目录下有个和项目同名的目录”hello_django",我们将其称之为“主目录”。其中"_init_.py"用来表明它是一个pyhton的包;“settings.py"是项目的配置文件;”urls.py“用来配置路由;”wsgi.py"是项目部署服务器所用。
和主目录同级的有个“manage.py”它被称之为“命令行”或是“管理器”
(5)pycharm代码同步
所谓的代码同步,就是将虚拟机ubuntu系统中的代码同步到windows的编辑器pycharm中,使用pycharm进行代码的编辑。
#1首先,在windows本地新建一个文件夹用来存放django项目,小叮当在e盘新建了名为“djproject”的文件夹。
#2在文件夹中创建与项目同名的文件夹“hello_django”
#3在“file"选项下选中”New Project"
在弹出的界面中选中我们在指定位置新建的文件夹
选择完成后的界面如下
在弹出的界面中,选择“open in new window"点击”ok"
在新的界面中选择“Tools"--"Deployment"--"configuration"
在弹出的界面左上方点击”绿色小加号“,出现”add server"对话框,随意起个名字,"type"选择“SFTP"用于代码同步。
接着在弹出的界面中,在SFTP?host输入你的虚拟机中Ubuntu的IP地址(若是苹果电脑,虚拟机为vitrulbox使用127.0.0.1),输出对应username(用户名)和password(密码),记得勾选”save password“,便于下次使用。
当这些填完时,点击”Test SFTP connection"进行连接测试
测试成功后,点击“Mapping"进行路径映射。
点击服务器路径设置框右边的三个点在弹出的ubuntu目录中找到home文件下的pyvip/dj_project/hello_django(也就是我们的django项目位置)
完成路径设置后,点击“ok"
在主页面选中”hello_django"之后,点击“tools”--“deployment”--"download from test"(从服务器上下载代码到本地)
点击之后pycharm则会有如下文件下载提示。
下载之后点击项目文件夹,可以发现,ubuntu中创建的django项目已被我们同步到windows本地。
(6)pycharm创建django项目上传到Ubuntu
除了在Ubuntu端创建django项目pycharm同步到本地编辑之外,我们还可以通过pycharm创建django项目上传到Ubuntu服务器。
#1为pycharm配置Linux运行环境
在pycharm主界面找到“file”--"default settings"--"project interpreter"
点击右边的小齿轮
点击“add”添加
选择“ssh interpreter”(远程解释器)输入相应的主机地址“192.168.255.130”和用户名后,点击“next”
输入密码后,点击“next”
检查下解释器的位置,确认正确后,点击“Finish”完成。
之后进入解释器的界面,点击“ok”即可。
下面我们从”tools“--”deployment"--"options"中进行同步方式设置。
为避免pycharm出现卡顿,我们在"uplaod changed files...."自动上传设置里选择”on explicit save action(ctrl+s)"表示,只有当按下“ctrl+s"时才会上传。选择”alway"表示实时更新上传,可能会令pycharm出现卡顿的现象。
#2在pycharm中创建django项目
选择"file"---"new project"--"django"
我们为项目起名为“test_hello_django”,选择“existing interpreter”(已存在的解释器)找到我们刚建好的“远程解释器”
选择远程目录为我们在ubuntu中创建好的“dj_project”文件夹
将我们要创建的项目名称“test_hello_django”加在远程目录之后
接下来?我们点击”more settings"(更多设置),我们在"Application name"那一栏中写入“book"
其中共有四栏,“Template language"指模版语言,我们选用默认的”Django"即可。“Templates folder"指系统为我们创建的模版文件夹的名称。”Application name“指项目创建app(应用)的名称。”Enable Django admin"打上对勾表示使用Django自带的管理后台。
设置完成之后,点击”create",在弹出的界面中选择“从新的窗口”打开。
点击“ok"后会弹出sudo密码确认窗口,我们输入密码即可。
之后我们便可以看到创建的test_hello_django项目,和相应的自动上传提示。
我们通过xshell在ubuntu中查看,可以看到项目已成功同步到ubuntu服务器中。
(7)启动服务方法一
(5)(6)为django创建项目的两种方法,在项目创建完成后,我们便要开始启动服务了。
下面我们以"hello_django"项目为例进行说明:
#1?允许所用主机访问项目
在settings.py中,找到"allowed_hosts"令其等于“*”表示该项目允许所有主机访问。
ALLOWED_HOSTS?=?['*']
最后“ctrl+s"上传到服务器。
#2 在xhell段进入项目目录,在目录下输入启动项目命令
#其中0.0.0.0的ip表示任意主机
python?manage.py?runserver?0.0.0.0:8000
如下所示
#3?在浏览器中输入相应ip地址和端口号进行测试
出现以下界面表示,项目运行成功
(8)启动服务方法二
#1配置项目运行环境为ubuntu下创建的虚拟环境
点击“file"--"settings"--"project interpreter"点击右边的小齿轮选择”add"进行添加
选择“ssh interpreter"填写相应的主机地址,用户名,点击”next“
输入密码,点击“next"
选择/home/pyvip/找到.virtualenvs路径下我们创建胡虚拟环境djtest2.1其bin目录下的python3.6(完整地址为/home/pyvip/.virtualenvs/djtest2.1/bin/python3.6)
选择映射地址
点击”remote path"远程地址进行更改
更改为项目所在地址/home/pyvip/dj_project/hello_django
更改后点击“ok”,在确认解释器和linux端项目位置正确后点击“finish"
在确认解释器正确后,点击”ok“
#2选择编辑器右上角的Edit Configuration?按钮
#3点击添加选择”django server"
#4配置“django server"
在name文本框自定义名称为”hello_django";host文本框命名为“0.0.0.0”
在Environment variables?处点击右边的“三个点”
添加环境变量“DIJANGO_SETTINGS_MODULE"值为"项目名称+settings"即”hello_django.settings"
选择解释器为我们配置的虚拟环境(djtest2.1)中的python,点击”ok“
若有红色警报,点击”fix"
在Enable django support处勾选对号,选择本地"hello_django"所在位置,和其"hello_django.settings"的文件位置,选好后,点击“ok"即可。
之后点击hello_django右侧的绿色小播放按钮,即可运行
此时仍在浏览器中输入”192.168.255.130:8000“,出现以下界面则证明我们运行成功。
三、创建视图、新建APP
1.创建视图
(1)在项目中直接新建“views.py”
在项目处右击,“new”--"python file"
起名为“views”
在“views.py”中输入以下代码
#!/usr/bin/env?python
#?-*-?coding:utf-8?-*-
__author__?=?'IT小叮当'
__time__?=?'2019-01-10?14:19'
#从django中导入http相应请求包
from?django.http?import?HttpResponse
#视图函数必须带有一个request请求(因为服务器是根据客户的请求进行返回响应的)
#定义视图函数hellodef?hello(request):
return?HttpResponse('大家好我是IT小叮当')
如下所示
(2)配置路由,点击“urls.py”进行编辑
加上如下代码即可
其中所加代码含义如下:
#从同级目录中导入views.py的hello函数
from?.views?import?hello
#为hello函数配置路由为'hello/'
urlpatterns?=?[
path('admin/',?admin.site.urls),
path('hello/',hello)
]
(3)上传代码到服务器后,开启服务
在项目处右击,找到“deployment”--"upload to test"(test为我们前几步时创建好的远程会话)
开启服务
在浏览器中输入“http://192.168.255.130:8000/hello/”
可以看到windows网页客户端已成功返回我们部署在虚拟机ubuntu服务器上的内容“大家好我是IT小叮当”
2.新建app
(1)了解什么是app
app全称application(应用的意思),在django项目中可以理解为“板块”的意思。
我们以豆瓣网为例进行说明,(因为豆瓣就是django写的),将整个豆瓣网看做一个django项目,其中主页的“读书”、电影“、”音乐”、“小组”、“同城”、“FM”、“时间”、“豆品”等就可看做是项目中的一个个app。
(2)新建app
方式一:通过命令行创建
在项目目录下输入相应的创建app命令即可。
#新建名为book的app
python?manage.py?startapp?book
创建界面如下
我们用tree命令查看
可以看到系统已经为我们搭好了框架,我们只需在其中填写内容即可。
我们在本地"hello_django"处右键---“deployment”--"download from xxx"(xxx为你自己创建的会话连接)
下载后可以看到名book的app已经同步到本地。
方式二:在pycharm中创建
在pycharm中找到“tools”--"run manage.py task...."
点击后可以看到pycharm已经帮我们自动运行了python manage.py
我们直接在其后输入“startapp movie”新建一个名为movie的app
可以看到我们以ssh的方式通过本地pycharm已在ubuntu服务器上建立app,接下来仍然是将代码同步到本地即可。(参考方式一的代码同步,这里不再赘述)
如果你耐心的看到这里,恭喜你,你已经掌握了Django的基本认知--工具准备--新建项目--代码同步--开启服务--创建视图--新建应用