了解一下python的三大web框架
一.Django框架
安装
pip3 install Django
创建一个Django项目
django-admin.py startproject 项目名字
或
django-admin startproject 项目名字
创建完成后有一个和项目名称一样的应用,该应用是对项目整体的设置,包含以下重要文件
asgi.py
settings.py项目设置文件
urls.py 链接设置文件
wsgi.py 部署服务器设置文件
创建应用(要在项目目录中,和manage.py文件同级别)
python manage.py startapp 应用名字
或
django-admin.py startapp 应用名字
创建完成后有以下几个文件
admin.py 后台相关设置文件
apps.py 应用相关的设置文件
models.py 数据库模型设置文件
tests.py 测试文件
views.py 视图文件
migrations目录 数据库设置文件
将应用添加到项目中,将项目同名的目录中settings.py文件中INSTALLED_APPS属性中添加应用
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', '自定义项目名字', ]
作用:项目启动会自动加载应用中的templates目录中的文件(模板文件)和static目录中的文件(静态文件)
1.视图层
主要是看应用中views.py文件和项目中urls.py文件
views.py文件
from django.http import HttpResponse 1.常用方式 def index(request): index是自定义的,但是规定第一个参数为request(包含GET和POST的请求,浏览器,系统等数据) return HttpResponse('welcome') 返回给客户端浏览器页面 2.如果需要获取参数 客户端传给服务器的链接为http://127.0.0.1:8000/.../?a=4&b=5,可以看到传参为GET方式(?后面是参数用&分割) def index(request): name = request.GET['a'] 获取参数,返回值字符串类型,request.GET相当于一个字典 name = request.GET.get('a',0) 获取参数,返回值字符串类型,没有则返回0 3.另一种获取参数 客户端传给服务器的链接为http://127.0.0.1:8000/.../4/5,传参也为GET方式(按照顺序进行指定) def index(request,a,b): 该方式获取的也是字符串类型 sum = int(a)+int(b)
4.将参数传给指定html页面
from django.shortcuts import render
def 自定义函数(request):
return render(request, 'html页面.html') 没有返回任何值,html的根地址是各应用的templates目录
return render(request, 'people/index.html') templates目录下有people目录
return render(request, 'html页面.html',{'str1': s1,'str2':s2}) 第三个参数为返回的值
urls.py文件
在urlpatterns变量中添加path路径 from 应用 import views 这里可能会报红,但是没关系 urlpatterns = [ path('admin/', admin.site.urls), 后面的'/'必须要加上 path('',views.index,name='...'),
path('index/',views.index), 这样浏览器访问127.0.0.1:8000/index/即可, ] 解释path参数 参数一:链接地址,''表示项目根目录,如果需要项目中应用1,可设置'应用1/'(也可使用正则),也可以直接定义传入值的类型,比如 path('add/<int:a>/<int:b>/', calc_views.add2, name='add2')或
return HttpResponseRedirect(reverse('必须地址名字', args=(a, b)))这种可以进行页面跳转() 参数二:应用中views.py文件中的自定义方法 参数三:给地址起别名,方便视图,模板或模型中使用(可忽略不设置)
2.模板层
在应用中创建templates目录,然后可以在该目录中创建html文件来写页面
Django的模板系统会自动找到各应用下的templates目录
注意:为了保证在多应用时查找准确,可以在templates目录中再创建一个和应用同名的子目录,在子目录中新建html文件
1.对<a>标签做跳转,并验证视图层中的urls.py的传参方式 <a href="{% url 'name' %}">link</a> <a href="{% url 'name' 参数1 参数2 %}">link</a> 2.获取视图层传过来的参数,可使用{{ '参数的key' }}来获取参数 3.页面中使用for {% for i in 集合参数 %} {{ item }}, {% endfor %} 如何集合参数中有空值可用for empty <ul> {% for n in n_list %} <li>{{ n.name }}</li> {% empty %} <li>抱歉,列表为空</li> {% endfor %} </ul> 4.页面中使用if {% if 条件 %} 执行语句 {% elif 条件 %} 执行语句 {% else %} 执行其他语句 {% endif %} 可以搭配下面变量使用 forloop.counter 索引从1开始算 forloop.counter0 索引从0开始算 forloop.revcounter 索引从最大长度到1 forloop.revcounter0 索引从最大长度到0 forloop.first 当遍历的元素为第一项时为真 forloop.last 当遍历的元素为最后一项时为真 forloop.parentloop 用在嵌套的for循环中,获取上一层for循环的forloop 5.页面中使用==,!=,>=,<=,>,< {% if num <= 100 and num >= 0 %} num在0到100之间 {% else %} 数值不在范围之内! {% endif %} 6.页面中使用and,or,not,in,not in 7.页面中获取当前网址 {{ request.path }} 8.页面中获取当前用户 {{ request.user }} 9.判断用户是否已登录 {% if request.user.is_authenticated %} {{ request.user.username }},您好! {% else %} 请登陆,这里放登陆链接 {% endif %} 10.获取当前GET方式的参数 {{ request.GET.urlencode }}
11.通过表单将值传递给后台
<form action="/add/" method="get"> action指定地址,前面加'/'表示根地址,否则是上个页面的相对地址,后面'/'可加可不加
a:<input type="text" name="a"><br> 后台通过名字来获取输入的值
b:<input type="text" name="b"><br>
<input type="submit" value="提交">
</from>
3.模型层
二.Flask框架
三.Tornado框架