一、创建虚拟环境
为什么需要虚拟环境?
- 因为业务需要,代码得分别部署在不同的服务器上面,每次部署的时候都得重复的安装包而且不能确定是否跟开发环境中的包版本相同
- 在本地环境下,不同的程序得用到不同版本的库和包,为了防止不同程序之间的混乱
- 将所有的虚拟环境整合在一个目录下。
- 管理(新增、移除、复制)所有的虚拟环境。
- 可以使用一个命令切换虚拟环境。
- Tab 补全虚拟环境的名字。
pip install virtualenvwrapper
- 列出虚拟环境列表:workon 或者lsvirtualenv
- 新建虚拟环境:mkvirtualenv [虚拟环境名称]
- 启动/切换虚拟环境:workon [虚拟环境名称]
- 删除虚拟环境:rmvirtualenv [虚拟环境名称]
- 离开虚拟环境:deactivate
mkvirtualenv Test
chenxing@Ubuntu:~/project/GamePF/s/init$ mkvirtualenv Test New python executable in Test/bin/python Installing setuptools, pip...done. virtualenvwrapper.user_scripts creating /home/chenxing/.virtualenvs/Test/bin/predeactivate virtualenvwrapper.user_scripts creating /home/chenxing/.virtualenvs/Test/bin/postdeactivate virtualenvwrapper.user_scripts creating /home/chenxing/.virtualenvs/Test/bin/preactivate virtualenvwrapper.user_scripts creating /home/chenxing/.virtualenvs/Test/bin/postactivate virtualenvwrapper.user_scripts creating /home/chenxing/.virtualenvs/Test/bin/get_env_details (Test)chenxing@Ubuntu:~/project/GamePF/s/init$
- 将包依赖信息写入requirements.txt中:
pip freeze > requirements.txt
2. 之后可以将该包上传到项目版本管理工具(svn, git)中,服务器拿到代码后,通过requirements.txt进行项目包的下载:
pip install -r requirements.txt
之后如果有什么扩展包的安装,可以通过上述 第1步 和 第2步 的方式对开发环境和部署环境进行很好的管理。
二、Django简介
(一)MVC框架和MTV框架
MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),具有耦合性低、重用性高、生命周期成本低等优点。
Django框架的设计模式借鉴了MVC框架的思想,也是分成三部分,来降低各个部分之间的耦合性。
Django框架的不同之处在于它拆分的三部分为:Model(模型)、Template(模板)和View(视图),也就是MTV框架。
更详细的MVC模式 > 点我
(二)Django的MTV模式
Model(模型):负责业务对象与数据库的对象(ORM)
Template(模版):负责如何把页面展示给用户
View(视图):负责业务逻辑,并在适当的时候调用Model和Template
此外,Django还有一个urls分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template
(三)Django的框架结构
三、安装Django
1、命令行安装
pip3 install django==1.11.15
2、pycharm
file ==>settings project ==>点加号 输入django 选择版本 下载
四、创建Django项目
1. 命令行
django-admin startproject 项目名
django-admin startproject mysite
2、 pycharm
file ——》 new project ——》 django ——》 项目名 ——》选择解释器 ——》create
3、目录结构
mysite/ ├── manage.py # 管理文件 └── mysite # 项目目录 ├── __init__.py ├── settings.py # 配置 ├── urls.py # 路由 --> URL和函数的对应关系 └── wsgi.py # runserver命令就使用wsgiref模块做简单的web server
五、创建APP
一个Django项目可以分为很多个APP,用来隔离不同功能模块的代码。
1、命令行创建
cd 切到manage.py目录下
python manage.py startapp app01
2、使用PyCharm创建
可以使用PyCharm的manage.py工具来执行命名。在主菜单栏中选择Tools,在下拉菜单中选择Run manage.py task,会出现如下图所示的工具对话框
在弹出的命令窗口中直接输入下面的命令便可创建app:
startapp app01 # 使用PyCharm的manage.py工具执行命令时,只用输入命令及参数即可,不再输入python manage.py了。
3、目录结构
app01/ migrations __init__.py __init__.py admin.py apps.py models.py tests.py views.py
4、注册APP
在settings.py里设置
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app01.apps.App01Config', # 也可以直接设置app01但是没有逼格 ]
六、配置文件
(一)模板文件配置 TEMPLATES
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, "template")], # template文件夹位置 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]
(二)静态文件配置
STATIC_URL = '/static/' # HTML中使用的静态文件夹前缀 别名 STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static"), # 静态文件存放位置 ]
刚开始学习时可在配置文件中暂时禁用csrf中间件,方便表单提交测试。
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', # 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ]
(三)Django项目使用MySQL数据库
. 在Django项目的settings.py文件中,配置数据库连接信息:
DATABASES = { "default": { "ENGINE": "django.db.backends.mysql", "NAME": "你的数据库名称", # 需要自己手动创建数据库 "USER": "数据库用户名", "PASSWORD": "数据库密码", "HOST": "数据库IP", "POST": 3306 } }
2. 在与Django项目同名的目录下的__init__.py文件中写如下代码,告诉Django使用pymysql模块连接MySQL数据库:
import pymysql pymysql.install_as_MySQLdb()
3、执行两条命令
python manage.py makemigrations [app名称] # 检查你的app下的models.py是否有变化 有变更将记录到app下的migrations文件夹下,不加app名称表示检查所有的app
python manage.py migrate # 把变更记录更新到数据中
或者Pycharm 里点击run manage.py task
输入
makemigrations 「app名称」不加app名称表示检查所有的app
migrate
七、配置路由系统
在urls.py里设置对应函数
from django.conf.urls import url from django.contrib import admin from app01 import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^login/', views.login), url(r'^index/', views.index), url(r'^test/', views.test), url(r'^logout/', views.logout), ]
八、编写视图函数
在对应app下的views.py里编写对应的逻辑
from django.http import HttpResponse import datetime def current_datetime(request): now = datetime.datetime.now() html = "<html><body>It is now %s.</body></html>" % now return HttpResponse(html)
九、运行Django项目
(1)命令行:
cd manage.py 的目录下
python manage.py runserver # 默认的 127.0.0.1:8000
python manage.py runserver 80 # 指定端口 127.0.0.1:80
python manage.py runserver 0.0.0.0:80 # 指定IP和端口 0.0.0.0:80
允许外部访问
允许外部访问的步骤:
调整防火墙
开启django时,使用0.0.0.0:xxxx,作为ip和端口例如: python manage.py runserver 0.0.0.0:9000 然后在settings里修改ALLOWED_HOSTS = [], 改为ALLOWED_HOSTS = ['*',],注意不要漏掉“,”。 其他机器就可以通过这台机器的ip和端口号访问django了。 例如:http://192.168.14.40:9000/index.html