虚拟技术
- 虚拟机
- 比较笨重
- 吃资源
- 功能最健全
- 虚拟容器
- 开发环境
- 项目运行环境
- docker
- 虚拟环境
- python特有的开发环境
虚拟环境搭建
- 安装虚拟环境软件
$ pip install virtualenv
- 安装虚拟环境统一管理软件
apt install virtualenvwrapper
- 配置虚拟环境
- 创建一个目录用来存放我们的虚拟环境
- 配置环境变量
- ~/.bashrc 用户级环境变量
- export WORKON_HOME=XXX
- source /YYY/virtualenvwrapper.sh
虚拟环境使用
- 创建虚拟环境
$ mkvirtualenv NAME
-p python_path 可以创建指定python版本的虚拟环境
2. 删除虚拟环境
$ rmvirtualenv NAME
3. 进入已有虚拟环境
$ workon NAME
4. 退出虚拟环境
$ deactivate
MVC,MTV
- 只要做Web开发,就一定用过MVC
- Web开发
- Python
- Java
- PHP
- node
- go
- MVC
- Model 用来处理数据的,封装数据操作
- View 视图,呈现给用户的样式
- Controller 控制器,协调Model和View关系,接收请求
- MTV
- Model 用来处理数据的
- Template 模板,用来呈现给用户看大
- Views 视图函数,和Controller一样, 接收请求,协调Model和Template
- Django除了基本的MTV外
- 还有urls
- 请求分发器(路由器)
HelloDjango
- 安装django
pip install django==1.11.7
2. 验证安装
$ pip freeze
- shell中验证
$ import django
$ django.get_version()
3. 创建Django项目
- django-admin startproject XXX
- XXX 项目名字,项目目录
- XXX 包
- init 初始化文件,包的标识文件
- settings 配置文件,设置文件
- urls 路由,请求分发器,程序被请求时的第一入口
- wsgi 网关接扣,开发过程中从来不会使用,部署项目的时候使用
- manage.py 项目的管理工具
4. 启动项目
$ python manage.py runserver
- 默认情况下,只允许本机访问,端口是8000
- 也可以通过参数指定特定的端口和I
- $ python manage.py runserver [ip:port]
- - 服务器的ip
- 0.0.0.0 代表本机的所有ip允许被访问
- 不指定ip也能使用
- django中继承了一个开发者服务器
- 只能用于开发
- 功能全,性能低
- python代码变更会自动重启
5. 创建一个应用
$ python manage.py startapp XXX
- 将XXX添加进settings中
- XXX
- init 初始化文件,包的标识
- models 模型文件
- views 视图函数文件
- tests 测试文件
- admin 管理者,django自带了一套admin系统
- apps 应用配置
跑通流程
- 从浏览器到urls
- 在urls中添加url规则
- 匹配规则
- 视图函数
- 在urls中添加url规则
views 到响应
- 可能会连接数据库
可能会渲染模板
必须返回HttpResponse
添加了模板渲染
- render
- 渲染html
- 添加和模型交互,和数据交互
- 流程
1). 从urls进来
- 流程
#urls.py:
from django.conf.urls import url
from django.contrib import admin
from App import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^hello/', views.hello),
url(r'^index/',views.index),
url(r'^weather/', views.weather),
url(r'^get_student/',views.get_student),
url(r'^get_student2/', views.get_student2),
]
2). urls对应views
# views.py
from django.http import HttpResponse
from django.shortcuts import render
# Create your views here.
from App.models import Student
def hello(request):
return HttpResponse('Django')
def index(request):
return HttpResponse('<h1>Intro</h1>')
def weather(request):
return render(request, 'weather.html')
# 在终端上显示
def get_student(request):
students = Student.objects.all()
for student in students:
print(student.s_name + '是' + str(student.s_age))
return HttpResponse('查询完毕')
# 通过模板在网页中显示
def get_student2(request):
students = Student.objects.all()
for student in students:
print(student.s_name + '是' + str(student.s_age))
return render(request, 'StudentList.html', context={'students': students})
3). views调用models,并且models返回数据到views
# models.py
from django.db import models
# Create your models here.
class Student(models.Model):
s_name = models.CharField(max_length=16)
s_age = models.IntegerField(default=18)
4). views拿着数据渲染模板
# StudentList.html 学生信息模板
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学生列表</title>
</head>
<body>
<h2>学生列表</h2>
{% for student in students %}
<li>{{ student.s_name }}</li>
{% endfor %}
</body>
</html>
# weather 天气预报模板
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>天气</title>
</head>
<body>
<h3>天气预报</h3>
<ul>
<li>有雨</li>
<li>冰雹</li>
<li>雷阵雨</li>
<li>多云</li>
<li>不要脸</li>
</ul>
</body>
</html>
- 模板呈现给用户
PyCharm
- 常用快捷键
- 代码提示
- **万能键 alt + ente**r
- 将光标放在代码报错区域
- 参数列表
- control + p
服务器
- 阿里云服务器
- 每天上午10:00
- AWS 亚马逊服务器
- 免费一年(信用卡)
- 淘宝虚拟信用卡(8.8)
- 可以搭建翻墙服务器
homework
- 画请求流程图
- 创建一个学生模型
- 查询学生列表
- 创建一个班级模型
- 查询班级列表
- 创建一个添加学生和班级的视图函数
- 创建一个获取单个学生和班级方式
- 通过点击班级,可以获取这个班里的所有学生