1. web框架的本质: socket服务端 与 浏览器的通信
2. socket服务端功能划分:
a. 负责与浏览器收发消息(socket通信) --> wsgiref/uWsgi/gunicorn...
b. 根据用户访问不同的路径执行不同的函数
c. 从HTML读取出内容,并且完成字符串的替换 --> jinja2(模板语言)
3. Python中 Web框架的分类:
1. 按上面三个功能划分:
1>. 框架自带a,b,c --> Tornado
2>. 框架自带b和c,使用第三方的a --> Django
3>. 框架自带b,使用第三方的a和c --> Flask
2. 按另一个维度来划分:
1>. Django --> 大而全(你做一个网站能用到的它都有)
2>. 其他 --> Flask 轻量级
3. 新建Django项目
命令行创建:
django-admin startproject mysite
pycharm创建:
1. File --> New project --> 左侧选Django --> 右侧填项目路径,并且勾选python.exe
4. 设置Django项目:
1. settings.py
1. 配置HTML文件存放的位置 settings.py ----->TEMPLATES 默认pycharm已经把路径创建完成
1 TEMPLATES = [
2 {
3 'BACKEND': 'django.template.backends.django.DjangoTemplates',
4 'DIRS': [os.path.join(BASE_DIR, 'templates')]
2. 配置静态文件存放的位置 settings.py ----->最下面
在根目录下创建一个static文件夹,放入类似css. JavaScript, jQuery, picture等静态引用文件资源
1 #静态文件保存目录的别名
2 STATIC_URL = '/static/'
3
4 #所有静态文件都放在配置的文件夹中
5 STATICFILES_DIRS=[
6 os.path.join(BASE_DIR,'static')
7 ]
以后引用下面的文件 直接 /static 比如:
1 <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.min.css">
3.在未涉及后面的csrf框架内容前,暂时需要注释掉它 默认在seeting.py 47行 MIDDLEWARE列表里面
1 # 'django.middleware.csrf.CsrfViewMiddleware',
GET请求: 是客户端从服务器获取资源 获取网页的请求
POST请求:是客户端提交内容给服务器 比如表单的提交
1 from django.conf.urls import url
2 from django.contrib import admin
3 from django.shortcuts import HttpResponse,render,redirect
4
5 def login(request):
6 error_msg=''
7 if request.method=='POST':
8 email = request.POST.get('email')
9 pwd = request.POST.get('pwd')
10 print(email, pwd)
11 if email == 'kevin@qq.com' and pwd == '12121':
12 return redirect('http://www.baidu.com')
13 else:
14 error_msg='邮箱或者密码错误'
15 return render(request, 'login.html',{'error':error_msg})
需要注意:GET和POST均需要大写
render函数:实现页面的渲染输出,还可以实现对关键字的渲染,比如警告或错误提示
redirect函数:实现页面重定向 特殊跳转
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
关于HTML页面要注意的地方:
1.获取用户输入的内容应该放在form表单里,输入框或者选择框等必须有name属性(name属性将会作为字典的键,从而获取用户输入内容)
1 email = request.POST.get('email')
2 pwd = request.POST.get('pwd')
2.form表单里的action属性控制提交到哪,method一般会设置为POST
1 <form class="form-horizontal" action="/login/" method="post">
3.提交按钮类型必须为submit
1 <button type="submit" class="btn btn-primary btn-block">登录</button>
4.上面提到的error取值源于
1 <p class="text-danger text-center">{{ error }}</p>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
完整的HTML表单页面代码块:
1 <!DOCTYPE html>
2 <html lang="zh-CN">
3 <head>
4 <meta charset="UTF-8">
5 <meta http-equiv="x-ua-compatible" content="IE=edge">
6 <meta name="viewport" content="width=device-width, initial-scale=1">
7 <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.min.css">
8 <link rel="stylesheet" href="/static/fontawesome/css/font-awesome.min.css">
9 <title>欢迎登录</title>
10 <style>
11 body {
12 background-color: #eee;
13 }
14 </style>
15 </head>
16 <body>
17
18 <div class="container">
19 <div class="row">
20 <div class="col-md-4 col-md-offset-4" style="margin-top: 100px">
21 <h1 class="text-center">请登录</h1>
22 <form class="form-horizontal" action="/login/" method="post">
23 <div class="form-group">
24 <label for="inputEmail3" class="col-sm-2 control-label"></label>
25 <div class="input-group col-sm-8">
26 <span class="input-group-addon"><i class="fa fa-envelope-o fa-fw"></i></span>
27 <input type="email" name="email" class="form-control" id="inputEmail3" placeholder="Email">
28 </div>
29 </div>
30 <div class="form-group">
31 <label for="inputPassword3" class="col-sm-2 control-label"></label>
32 <div class="input-group col-sm-8">
33 <span class="input-group-addon"><i class="fa fa-key fa-fw"></i></span>
34 <input type="password" name="pwd" class="form-control" id="inputPassword3" placeholder="Password">
35 </div>
36 </div>
37 <div class="form-group">
38 <div class="input-group col-sm-offset-2 col-sm-8">
39 <div class="checkbox">
40 <label>
41 <input type="checkbox"> 记住我
42 </label>
43 </div>
44 </div>
45 </div>
46 <div class="form-group">
47 <div class="input-group col-sm-offset-2 col-sm-8">
48 <button type="submit" class="btn btn-primary btn-block">登录</button>
49 </div>
50 </div>
51 <p class="text-danger text-center">{{ error }}</p>
52 </form>
53 </div>
54 </div>
55 </div>
56 </body>
57 </html>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
APP应用程序的创建:
最好默认在创建web时就在pycharm 的隐藏More Seeting里面去填入APP的名字,自动创建完成
若在web项目创建之后想添加APP程序 可以在pycharm命令行里输入:Python manage.py startapp app名
配置:默认创建则会自动将APP添加到seeting配置文件里
否则需要手动添加: INSTALLED_APPS列表下的
1 'appfind.apps.AppfindConfig',