Ubuntu基本使用
Linux用户权限:root 普通用户(申请root权限 sudo)
LInux系统中有两种常用系统包管理工具yum和apt。
低版本中安装包使用apt-get,新的现在只需要写apt就OK了
apt指令(兼容apt-get和apt-cache)
apt install xxx 安装xxx软件
apt remove xxx 移除xxx软件
apt autoremove xxx 移除xxx 软件和自动安装且不使用的包
Ubuntu基本使用
control+alt+t 打开终端 tree 树形查看
cd 进入目录 mkdir 创建文件夹
ls 查看文件 rm 删除
touch (刷新文件时间戳,vi也是,文件不存在就会创建)创建文件
pip:python的一个包管理工具
virtualenv:python专属的虚拟环境,用来保持一个干净的环境
mysql:常用数据库
Django 简介
可以去GitHub上搜python,了解库 web提升:https://github.com/donnemartin/system-design-primer
Django发布于2005年,是当前python世界里最负盛名且成熟的网络框架。最初用来制作在线新闻的web站点。
Django是一个用Python编写的开放源代码的web应用框架(源代码是开源的,遵守BSD版权)。采用了MVC的框架模式,也有很多人把它称为MVT(mtv)模式。
官方网站:https://www.djangoproject.com/
MVC设计模式
一种软件设计典范,用一种业务逻辑,使数据,界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面与用户交互的同时,不需要重新编写业务逻辑。
MVC被独特的发展起来用于映射传统的输入,处理和输出在一个逻辑的图形化界面结构中。
核心思想:解耦
优点:降低模块之间的耦合性,方便变更,更容易重构代码,最大程度实现了代码的重用。
MVC(Model,View,Controller)
Model:用于封装与应用程序的业务逻辑相关的数据及对数据的处理方法,是web应用程序中用于处理应用程序的数据逻辑部分,Model通常只提供功能性的接口,通过这些接口可以获取Model的所有功能。
View:负责数据的显示和呈现,View是对用户的直接输出。
Controller:负责从用户端收集用户的输入,可以看成提供View的反向功能,主要处理用户交互。
MTV模式简介
本质上与MVC没什么差别,就是各组件之间为了保持松耦合关系,只是定义上有些许不同。
Model:负责业务对象与数据库(ORM)的对象。
Views:负责业务逻辑,并在适当的时候调用Model和Template
Template:负责把页面展示给用户。
注意:Django中还有一个url分发器(也可以叫路由),主要用来将一个个URL页面的请求分发给不同的view进行处理,view再调用相应的model和template。
Linux Ubuntu 下进行:
mkvirtualenv GP2 -p /usr/bin/python3
pip install django==1.11.7
pip freeze 看装上没?
因为Django1.11支持python2和python3 而Django2.2只支持python3所以学习1.11
创建一个Django项目
django-admin startproject xxx 创建一个名字为xxx的工程
查看默认目录结构 进入目录tree
|--------HelloWorld
| |-------__init__.py
| |-------settings.py
| |-------urls.py
| |-------wsgi.py
|-------manage.py
python manage.py runserver 运行
打开浏览器访问http://127.0.0.1:8000/ 就可以访问了
python manage.py startapp App #创建一个项目
SQLite:
manage.py:是Django用于管理本项目的命令行工具,之后进行站点运行,数据库自动生成等都是通过本文件完成。
HelloDjango/init.py告诉python该目录是一个python包,暂无内容,后期一些工具的初始化可能会用到
HelloDjango/settings.py Django项目的配置文件,默认状态其中定义了本项目引用的组件,项目名,数据库,静态资源等。
BASE_DIR:动态获取目录
SECRET_KEY:秘钥 需要加密的时候使用
DEBUG:调试模式
ALLOWED_HOSTS=[] 允许访问的ip "*"表示任何可以访问
INSTALL_APPS:安装的应用
MIDDLEWARE:中间件
ROOT_URLCONF:跟路由
HelloDjango/urls.py 维护项目的URL路由映射,即定义当客户端访问时由哪个模块进行响应。
urlpatterns:路由
HelloDjango/wsgi.py 定义WSGI的接口信息,主要用于服务器集成,通常本文件生成后无需改动。
用pycharm打开项目一定要打开manage的上一级
python manager.py runserver [ip:port]
可以直接进行服务运行 默认执行起来的端口是8000
也可以自己指定ip和端口
ip指定为0.0.0.0的时候,匹配本机的全部ip
浏览器访问:localhost:8000 可以看到服务器启动成功
迁移的概念:就是将模型映射到数据库的过程
生成迁移:python manager.py makemigrations
执行迁移:python mananger.py migrate
介绍DataBase模块,可以直接连接操作数据库Sqlite和MySQL
'ENGINE':'django.db.backends.mysql',
'NAME':'Learn',
'USER':'root',
'PASSWORD':'rock1204',
'HOST':'127.0.0.1',
'PORT':'3306',
连接sqlite 进行迁移 迁移之后django_migrations表里就会有数据了
id app name applied时间
在python 2.x
在python 3.x
python manager.py startapp XXX
创建名称为XXX的应用
创建之后可以通过tree来看一下目录结构
使用应用前需要将应用配置到项目中,在settings.py中将应用加入到INSTALLED_APPS选项中
init.py:其中暂无内容,使得app成为一个包
admin.py:管理站点模型的声明文件,默认为空
apps.py:应用信息定义文件,在其中生成了AppConfig,该类用于定义应用名等数据
models.py:添加模型层数据类文件
views.py:定义URL相应函数(路由规则)
migrations包:自动生成,生成迁移文件的
tests.py:测试代码文件
现在我们需要将APP注册到项目工程中,在HelloWorld中的settings.py总的INSTALLED_APPS下加入’App’
首先我们在views.py中建立一个路由响应函数
from django.http import HttpResponse
def welcome(request):
return HttpResponse(‘HelloDjango’);
接着我们在urls中进行注册
from App import views
url(r’^welcome/’,views.welcome)
基于模块化的设计,我们通常会在每个app中定义自己的urls
在项目的urls中将app的urls包含进来
from django.conf.urls import include
url(r’^welcome/’,include(‘App.urls’))
模板实际上就是我们用HTML写好的页面 在APP中加个templates文件夹
创建模板文件夹,两种,在工程目录的需要注册
settings中的TEMPLATES中的DIRS中添加
os.path.join(BASE_DIR,‘templates’)
在模板文件夹中创建模板文件 two/books.html
def index(request):
return render(request,'two/books.html')
在views中去加载渲染模板
两种方法:实际上需要两步:1 加载模板 2渲染模板
定义年级
class Grade(models.Model):
gname = models.CharField(max_length=10)
gdate = models.DateTimeField()
ggirlnum = models.IntegerField()
gboynum = models.IntegerField()
isDelete = models.BooleanField()
定义学生
class Students(models.Model):
sname = models.CharField(max_length=20)
sgender = models.BooleanField(default=True)
sage = models.IntegerField()
sinfo = models.CharField(max_length=20)
isDelete = models.BooleanField(default=False)
# 关联外键
sgrade = models.ForeignKey(Grade)
如果模型写错了,则需要将迁移文件删除,再建个migrations文件夹,并且将数据库中的迁移表中的迁移记录删除(记得submit),再生成迁移,执行迁移
可以有多个app python manage.py startapp Two
from Two import views as two_views
urlpatterns={
url(r'two/index/',two_views.index)
}
这种方式不太方便,可以在Three APP下创一个urls.py 写上
from django.conf.urls import
from Tree import views
urlpatterns=[
url(r'^index/',views.index),
]
#在工程项目 urls.py中进行注册
from django.conf.urls import url,include
urlpatterns=[
url(r'^three/',include('Tree.urls)),
]
进入python shell:python manage.py shell
导入包:
数据测试增删改查
查询: 类名.objects.all()
Grade.objects.all()
插入数据:
对象.save()
grade_one = Grade()
grade_one.gname='python1705' grade_one.gdate=datetime(year=2017,month=7,day=28)
grade_one.ggirlnum=5
grade_one.gboynum = 60
grade_one.save()
查看某个指定对象
类名.objects.get(pk=1)
Grade.objects.get(pk=1)
修改数据
模型对象.属性=属性值
模型对象.save()
grade_one.gboynum = 55
grade_one.save()
删除数据
模型对象.delete()
grade_one.delete()
测试关联对象
stu = Students()
stu.sname=‘rock’
stu.sgender=True
stu.sage=20
stu.sinfo=‘小天才’
stu.sgrade=grade_one
stu.save()
获得关联对象集合:获取班级中的所有学生
对象名.关联的类名小写_set.all()
grade_one.student_set.all()
在urls配置路由规则
在views中调用models中的函数进行查询
books=Book.objects.all()
data={
"books":books
}
return render(request,'app/Books.html',context=data)
在views中对模板进行渲染
模板获取views中传过来的数据
{% for book in books %}
- {{ book.b_name }}
{% endfor %}
渲染后的模板显示给用户
挖坑
{{ xxx }}
表达式 {% for student in students %}
{{student}}
{% endfor %}