Django入门

一、什么是web应用

1、软件开发架构

c/s架构
    客户端
    服务端
b/s架构
    浏览器
    服务器

本质:b/s架构其实也是c/s架构


2、HTTP协议

超文本传输协议:规定了客户端与服务端消息传输的格式

四大特性:
    1.基于TCP/IP协议作用于应用层的协议
    2.基于请求响应
    3.无状态
    4.无连接

数据格式之请求:
    请求首行
    请求头(一堆k,v键值对)
    
    请求体(post请求携带的数据)

数据格式之响应:
    响应首行
    响应头(一堆k,v键值对)
    
    响应体(post请求携带的数据)

响应状态码
    1XX    服务器已经成功接受到你的数据正在处理,你可以继续提交其他数据
    2XX    请求成功 服务器已经将你请求的数据发送给你了
    3XX 重定向
    4XX 请求资源不存在
    5XX 服务器错误


3、web应用程序的优、缺点

优点:
1.网络应用程序不需要任何复杂的“展开”过程,你所需要的只是一个适用的浏览器;
2.网络应用程序通常耗费很少的用户硬盘空间,或者一点都不耗费;
3.它们不需要更新,因为所有新的特性都在服务器上执行,从而自动传达到用户端;
4.网络应用程序和服务器端的网络产品都很容易结合,如email功能和搜索功能;
5.因为它们在网络浏览器窗口中运行,所以大多数情况下它们是通过跨平台使用的 (例如Windows,Mac,Linux等等)


缺点:
1.网络应用程序强调浏览器的适用性。如果浏览器方没有提供特定的功能,或者弃用特定的平台或操作系统版本(导致不适用),就会影响大量用户;
2.网络应用依靠互联网远程服务器端的应用文件。因此,当连接出问题时,应用将不能正常使用。
3.许多网络应用程序不是开源的,只能依赖第三方提供的服务,因此不能针对用户定制化、个性化,而且大多数情况下用户不能离线使用,因而损失了很多灵活性;
4.它们完全依赖应用服务商的可及性。如果公司倒闭,服务器停止使用,用户也无法追索以前的资料。对比而看,即使软件制造商倒闭了,传统的安装软件也可以继续运行,尽管不能再更新或有其他用户服务;
5.相似地,提供方公司对软件和其功能有了更大的控制权。只要他们愿意就能为软件添加新特性,即使用户想等bugs先被解决再更新。跳过较差的软件版本也不可能了。公司可以强加不受欢迎的特性给用户,也可以随意减少带宽来削减开支。
6.公司理论上可以检索任何的用户行为。这有可能引起隐私安全问题。


4、模板渲染

后端生成的数据直接传递给前端页面使用(并且前端页面可以灵活的操作改数据) >>> 模板语法

模板渲染 模板语法需要依赖于第三方模块
pip install jinja2

模板语法  jinja2支持前端直接使用类似于python的语法操作数据
<p>{{ user_dic }}</p>
<p>{{ user_dic.name }}</p>
<p>{{ user_dic['password'] }}</p>
<p>{{ user_dic.get('name') }}</p>

{% for user in user_dict %}  <!--[{},{},{},{}]-->
    <tr>
        <td>{{ user.id }}</td>
        <td>{{ user.name }}</td>
        <td>{{ user.password }}</td>
    </tr>
{% endfor %}


二、python web框架

1、简介

web应用本质上就是一个socket服务端,而用户的的浏览器就是一个socket客户端。


Django:大而全,自带了很多功能模块,类似于航空母舰(缺点:笨重)
Flask:短小精悍,自带功能模块特别少,大部分都是依赖于第三方模块
Tornado:异步非阻塞,主要用在处理高IO 多路复用的情况 可以写游戏后端

Django:
    socket:用别人的wsgiref
    路由与视图函数:自己写的
    模板渲染:自己写的
    
Flask:
    socket:用别人的werkzeug
    路由与视图函数:自己写的
    模板渲染:自己写的
    
Tornado:
    三者都是自己写的


三、Django

1、创建Django项目注意事项

1.计算机的名称不能有中文
2.一个pycharm窗口就是一个项目,不要多个项目放在一个窗口里面
3.项目名不能起中文


2、安装Django

1、版本
推荐下载1.11.11版本

2、下载
pip3 install django==1.11.11

3、验证是否下载成功
django-admin


3、创建Django的方式

方式一(命令行创建):
    创建django目录
        django-admin startproject   项目名
    创建app应用
        python3 manage.py startapp app01
    启动django项目
        python3 manage.py runserver
    ps:用命令行创建django默认不会自动创建templates文件夹,需要手动创建(注意改文件夹路径是否被添加配置文件中)
    

方式二(pycharm创建)
    FILE >>> new project 选择第二个django 需要注意名字不能有中文,选择本地的解释器,勾选后台管理
        创建app
            pycharm命令行创建
                python3 manage.py startapp app01
                Tools下面run manage task功能栏
            启动点小绿色箭头
            

强调:
    1.用django一定要保证只有一个在运行状态  切记切记!!!
    2.一定记得清浏览器的缓存


4、Django之app的概念

app(应用)的概念:
    一个django项目就是一所大学
    app就是大学里面的学院


注意新创建的app需要在配置文件中注册才能生效:
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01.apps.App01Config'      # 可以用全称
    'app01'            # 也可以简写
]


5、Django各个文件的作用

应用名:
    migrations :数据库迁移记录相关数据
    admin.py    django后台管理相关
    model.py    模型表相关
    view.py     视图函数相关
    
项目名
    setting.py  配置文件
    urls.py     路由与视图函数的映射关系
    
templates
    项目用到的所有html文件
    
manage.py
    django入口文件


6、django小白必会三板斧

##views.py##
from django.shortcuts import render,HttpResponse,redirect

HttpResponse  返回字符串

render              返回一个html页面
      两种给前端页面传值的方式
        def reg(request):
            user_dict = {'name':'jason','password':'123'}
            return render(request,'reg.html',{'user_dict':user_dict})
        
        def reg(request):
            user_dict = {'name':'jason','password':'123'}
            return render(request,'reg.html',locals())
            
redirect      重定向,既可以重定向到别的网址,也可以定向到自己的地址
原文地址:https://www.cnblogs.com/weiyiming007/p/11776611.html