Django(一)

Django

  1. 虚拟环境

VirtualEnv用于在一台机器上创建多个独立的Python虚拟运行环境,多个Python环境相互独立,互不影响,它能够:

在没有权限的情况下安装新套件 不同应用可以使用不同的套件版本 套件升级不影响其他应用

注意虚拟环境的包安装不要加sudo,sudo会装在全局! 注意虚拟环境的包安装不要加sudo,sudo会装在全局! 注意虚拟环境的包安装不要加sudo,sudo会装在全局!

1.1. 1 虚拟环境的创建和使用

项目1 ——> 依赖 mysqldb 1.2.5

项目2 ——> 依赖 mysqldb 2.0.1

之前安装python 包命令 sudo pip3 install 包名 包的安装路径 /usr/loacal/lib/pythoon3.5/dist-packages

那么安装同一个包的不同版本出现的情况是: 后安装的包会吧原来安装的包覆盖掉

这样子,一台机器上两个项目依赖与相同包的不同版本,则会导致一些项目运行失败

解决方案就是 : 虚拟环境

虚拟环境是真是python环境的复制版本

1.2. 2 安装虚拟环境的命令

安装虚拟环境 sudo pip install virtualenv

安装虚拟环境扩展包 sudo pip install virtualenvwrapper

编辑用户主目录下的.bashrc 文件 cd ~/ vim .bashrc

添加下面2行($home代表家目录)

export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
source .bashrc #让你的文件立马生效 第一行代表你创建的虚拟环境放在哪里 第二行代表开启了 扩展命令的全局变量

使用 source .bashrc 使其生效一下

1.2.1. 创建 虚拟环境命令:

mkvirtualenv 虚拟环境名

注意如果不加 -p python3 则配置是python2的虚拟环境

1.2.2. 创建一个python3的虚拟环境

mkvirtualenv -p python3 xdl (如果提示没有什么module 则直接pip安装即可)

看图最后一行,如果你前面出现了括号,说明你正在虚拟环境中工作

虚拟机的位置 发现安装位置的 lib中 是pyton3.6

而且以后的安装包的位置也就是在虚拟环境中,在虚拟环境中使用的也是这个环境的python 初次之外 跟其他没有任何区别,并不会说你创建了一个目录,然后退出虚拟环境后就没有了,只是复制一个python的运行环境

在虚拟环境中使用的python是复制的python 安装的python包也是在复制的python中

1.2.3. 进入虚拟环境工作

workon 虚拟环境名

1.2.4. 查看机器上有多少个虚拟环境

workon 空格 + 两个tab

1.2.5. 退出虚拟环境

deactivate ( 英[ˌdi:ˈæktɪveɪt] 英文解除的意思)

1.2.6. 演示一下

创建后仍然有文件 退出 进入工作 查看多少虚拟环境

1.2.7. 注意 创建必须有网

1.2.8. 删除虚拟环境

rmvirtualenv + 名字

1.2.9. 虚拟环境安装包命令

pip install 包名 注意: 不能用 sudo pip install 包名, 这个命令会把包安装到真实的主机环境上。

apt-get install 软件 pip install 包名

两个命令区别: pip依赖python环境,是安装python包。 而apt-get 是安装ubuntu的软件

1.2.10. 查看虚拟环境有哪些包

pip list

pip freeze 解释:

pip freeze 为什么比 pip list 的包少几个呢? 因为pip , wheel , setuptools 等包,是自带的而无法(un)install的。考虑到pip freeze的用途,所以这些包并没有显示。

注意虚拟环境的包安装不要加sudo,sudo会装在全局! 注意虚拟环境的包安装不要加sudo,sudo会装在全局! 注意虚拟环境的包安装不要加sudo,sudo会装在全局!

1.3. 扩展讲解: 虚拟环境常用命令

创建虚拟环境:

mkvirtualenv --python=路径\python.exe 虚拟环境



cd py2/bin #进入环境下启动
source activate # 启动

deactivate # 退出环境



通用命令:


查看已安装的包
pip list

检查哪些包需要更新
pip list --outdated

升级包
pip install --upgrade SomePackage

卸载包
pip uninstall SomePackage

参数解释
pip --help

创建环境
mkvirtualenv 虚拟环境名称 (python2)
mkvirtualenv -p python3 虚拟环境名称 (python3)

创建成功后,会自动工作在这个虚拟环境上
提示1:创建虚拟环境需要联网
提示2:工作在虚拟环境上,提示符最前面会出现“(虚拟环境名称)”

退出环境
deactivate

workon
两次tab键

删除虚拟环境
rmvirtualenv 虚拟环境名称

安装环境
pip install 包名称

批入导入环境包
在本机进入虚拟环境,执行命令导出当前需要的所有包
pip freeze > plist.txt
通过ftp软件将项目代码和plist.txt文件上传到服务器
创建虚拟环境,在虚拟环境上安装包
mkvirtualenv 虚拟环境名称
pip install -i https://pypi.douban.com/simple/ -r plist.txt
2. 项目创建

django安装后 进行django框架的搭建

命令:django-admin startproject mysite

mysite是项目目录名,可以自定义,

注意:创建应用必须先进入虚拟环境

// 创建一个工作目录,以后每天的代码都放这里 (xdl) xdl@xdl-virtual-machine:/home​ ls (xdl) xdl@xdl-virtual-machine:~​ cd xdl01/ (xdl) xdl@xdl-virtual-machine:~/xdl01$

我们来看看startproject创建的内容:

项目目录如下:

├── manage.py └── test1 ├── init.py 说明test1 是一个python包 ├── settings.py 项目的配置文件,数据库等 ├── urls.py 进行url路由的配置 └── wsgi.py 调东西遵循wsgi协议,web服务器和Django交互的入口

manage.py 项目的管理文件

关于上面自动生成的目录与文件解释如下

外部test/根目录只是一个项目的容器。它的名字与Django无关; 您可以将其重命名为您喜欢的任何内容。 manage.py:一个命令行实用程序,可以让您以各种方式与此Django项目进行交互。你可以阅读所有的细节 manage.py在Django的管理和manage.py。 内部mysite/目录是您的项目的实际Python包。它的名字是您需要用来导入其中的任何内容的Python包名称(例如mysite.urls)。 mysite/init.py:一个空的文件,告诉Python这个目录应该被认为是一个Python包。 mysite/settings.py:此Django项目的设置/配置。 Django设置会告诉你所有关于设置的工作原理。 mysite/urls.py:该Django项目的URL声明; 您的Django动力网站的“目录”。 mysite/wsgi.py:WSGI兼容的Web服务器为您的项目提供服务的入口点。

2.1启动项目

在当前 manage.py的文件目录下 执行一下命令

python manage.py runserver

您将在命令行中看到以下输出:

Performing system checks…

System check identified no issues (0 silenced).

You have unapplied migrations; your app may not work properly until they are applied.
Run ‘python manage.py migrate’ to apply them.(注意:现在忽略关于未执行应用数据库迁移的警告)

August 07, 2017 - 15:50:53
Django version 1.11, using settings ‘mysite.settings’
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
注意:通过IP访问后报如下错误:

DisallowedHost at /polls Invalid HTTP_HOST header: ‘192.168…:8000’. You may need to add ‘192.168…’ to ALLOWED_HOSTS.

HTTP_HOST标头无效:‘192.168…:8000’。您可能需要将“192.168…”添加到ALLOWED_HOSTS 解决: 进入 mysite/settings.py文件 ALLOWED_HOSTS = [‘192.168.194.132’]

  1. 浏览器访问

127.0.0.1:8000 看到 it works 说明运行成功

4 创建应用

  1. 1 创建应用

创建目录。

要创建您的应用程序,请确保您与目录位于同一目录,manage.py 并键入以下命令:

workon django

python manage.py startapp myweb

这将创建一个目录myweb,其目录如下:此目录结构将容纳轮询应用程序。

[root@localhost demo]# tree mysite/
mysite/
├── manage.py
├── mysite
│ ├── init.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── myweb
├── admin.py
├── apps.py
├── init.py
├── migrations
│ └── init.py
├── models.py
├── tests.py
└── views.py
4. 2 创建视图

Django具有“视图”的概念来封装负责处理用户请求和返回响应的逻辑。

在myweb/views.py

from django.shortcuts import render
from django.http import HttpResponse

Create your views here.

定义视图函数,业务逻辑

def index(request):

# 返回一句话
return HttpResponse(‘Hello World!!!’)
4.3 修改root路由 mysite/urls.py

当用户使用django提供的站点进行访问时,首页由路由进行匹配访问地址,然后指定函数或子路由进行处理

from django.conf.urls import url,include
from django.contrib import admin

urlpatterns = [
# url(r’^admin/’, admin.site.urls),
url(r’^’, include(‘myweb.urls’)),
]
4. 4 在应用下创建子路由

from django.conf.urls import url
from . import views

urlpatterns = [
url(r’^hello/’,views.index),
]
4. 5 通过浏览器访问服务

注意:url路由,由上而下 进行匹配,如果在上面就匹配成功,则不会向下匹配

通过浏览器访问服务 127.0.0.1:8000/abc ==> root url(根路由) ==> 加载子路由(myweb/urls.py)

==> 正则匹配访问的路径(path) =-=> 视图函数(views.index)

==> views.py index() 响应内容
4.6 使用模板

作为Web 框架,Django 需要一种很便利的方法以动态地生成HTML。

最常见的做法是使用模板。

模板包含所需HTML 输出的静态部分,以及一些特殊的语法,描述如何将动态内容插入。

在当前manage.py的同级目录中创建一个文件夹 templates/index.html

在settings.py文件中 TEMPLATES模块设置选项

‘DIRS’: [os.path.join(BASE_DIR,“templates”)],

在子路由中添加一个路由
url(r’^tmp$’,views.tmp,name=‘myweb_tmp’),

在views.py 创建一个 tmp的视图函数

def tmp(request):
# 加载一个模块
return render(request,‘index.html’)
如果在视图函数加载模板时,分配了数据,就可以在模板中使用数据

def tmp(request):

实例化 模型对象,获取数据

分配数据,

context = {‘info’:‘aabbccddee’}

加载一个模块

return render(request,‘index.html’,context)





在html模板中输出变量 输出

加载数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值