zoukankan      html  css  js  c++  java
  • day49 django

    http协议

    四大特性

    ​ 1.基于TCP/IP作用于应用层之上的协议
    ​ 2.基于请求响应
    ​ 3.无状态
    ​ 4.无连接

    数据格式

    请求格式
    ​ 请求首行
    ​ 请求头
    ​ /r/n
    ​ 请求体

    响应状态码

    ​ 用数字表示一串语言解释

    Django

    纯手撸简易web框架

    基于第三方模块wsgiref帮你撸

    views.py 里面放的是函数 叫视图函数 视图层

    urls.py 里面放的是 路由(后缀)与视图函数是对应关系 路由层

    templates文件夹 里面放的是HTML代码 模板层

    动静态网页

    静态网页:数据是写死的 万年不变,哪怕改变了 也是人为直接修改的

    动态网页:数据是实时获取的

    eg:1.后端代码动态获取, 当前时间
    ​ 2. 数据是从数据库查询出来的

    题目1:访问页面,页面上展示当前访问时间
    题目2 :访问页面,页面上展示后端用户字典 并且在前端页面通过一些简便的方法操作字典取值

    jinja2模板语法

    ​ 专门用来处理后端数据和HTML页面的交互

    模板语法(极其贴近python后端语法)

    让你能够在HTML页面上,也能够用后端python语法来操作后端传递过来的数据

    		<p>{{ userDic }}</p>
    		<p>{{ userDic.username }}</p>
    		<p>{{ userDic['age'] }}</p>
    		<p>{{ userDic.get('hobby') }}</p>
    		<p>{{ userDic.get('hobby').0 }}</p>
    		<p>{{ userDic.get('hobby').1 }}</p>
    		<p>{{ userDic.get('hobby').2 }}</p>
    		
    		{% for user_dic in user_list %}
    			<tr>
    				<td>{{ user_dic.id }}</td>
    				<td>{{ user_dic.username }}</td>
    				<td>{{ user_dic.password }}</td>
    			</tr>
    		{% endfor %}
    

    模板的渲染 将后端传递给HTML文件的数据,在后端处理好,生成一个完整的HTML文件的过程(是在后端完,和前端没有关系)

    python三大主流web框架

    Django:大而全,自带的组件和功能非常多,类似于航空母舰。不足之处:写小项目的时候,可能会比较笨重(大材小用)

    flask:小而精 短小精悍 自带的组件和功能特别少,基本全部依赖于第三方组件。类似于游骑兵。不足之处:受限于第三方模块的影响比较大。如果将flask所有第三方模块加起来,能直接盖过Django

    tornado:异步非阻塞,甚至可以用来开发游戏服务器。

    自定义框架:
    ​ a:socket部分
    ​ b:路由匹配
    ​ c:模板语法

    django:a用的别人的wsgiref(django默认的),b自己写的,c自己写的
    flask:a用别人的werkzeug,b自己写的,c用的别人的jinja2
    Tornado:a,b,c都是自己写的

    Django框架介绍

    注意事项:
    1.计算机名称不能有中文
    2.python解释器不要使用3.7版本 推荐使用3.4~3.6
    3.一个python窗口只能跑一个项目

    Django版本问题:
    django版本以1.11。11为主(1.11.9~1.11.13)

    如何检验Django是否安装成功:
    命令行敲 django-admin

    命令行创建项目:

    1.创建django项目
    ​ django-admin startproject 项目名(比如mysite)

    2.启动Django项目:
    ​ 切换到项目文件夹下:
    ​ python3 manage.py runserver(本人电脑python manage.py runserver)
    ​ python3 manage.py runserver 127.0.0.1.8080(指定端口)

    3.创建应用(django支持多app开发)
    ​ python3 manage.py startapp app名

    注意:
    ​ 1.不会自动帮你创建templates文件夹
    ​ 2.配置文件中不会自动帮你书写templates文件路径

    app的概念
    ​ django是一个以开发app为主要功能的web框架,
    ​ app就是application应用的意思。

    ​ 一个django项目就是一所大学(空的架子,本身没有任何功能),
    ​ 而app就类似于大学里面的各个学院

    ​ 一个空的django本身没有任何作用,仅仅是为了app做好前期的环境配置

    ​ 可以根据功能的不动,开发多个app
    ​ 一个app对应一个具体的功能模块:
    ​ 用户相关的功能 用户相关的app
    ​ 订单相关的功能 订单相关的app
    ​ 商品相关的功能 商品相关的app
    ​ 每个app都有自己独立的功能

    ​ 创建好的app需要在django配置文件中注册方可生效

    INSTALLED_APPS = [
    			'django.contrib.admin',
    			'django.contrib.auth',
    			'django.contrib.contenttypes',
    			'django.contrib.sessions',
    			'django.contrib.messages',
    			'django.contrib.staticfiles',
    			# 'app01'  # 简便写法
    			'app01.apps.App01Config'  # 最完整的写法
    		]
    

    pycharm创建项目

    ​ 1.创建应用的时候,可以使用简便方式
    ​ Tool>>>run manage.py task

    ​ startapp 应用名

    ​ 2.一定要确保同一个端口,同一时间只能启动一个django项目

    ​ 3.配置文件中针对templates文件夹的路径,如果是空的需要手动配置

    TEMPLATES = [
    					{
    						'BACKEND': 'django.template.backends.django.DjangoTemplates',
    						'DIRS': [os.path.join(BASE_DIR, 'templates')]
    						,
    						'APP_DIRS': True,
    						'OPTIONS': {
    							'context_processors': [
    								'django.template.context_processors.debug',
    								'django.template.context_processors.request',
    								'django.contrib.auth.context_processors.auth',
    								'django.contrib.messages.context_processors.messages',
    							],
    						},
    					},
    				]
    

    django文件功能

    ​ django项目名
    ​ 项目同名的文件夹
    ​ setting.py 暴露给用户可以配置的配置文件
    ​ urls.py 路由与视图函数对应关系
    ​ manage.py django的入口文件
    ​ 应用名文件夹
    ​ migrations文件夹 所有数据库相关的操作记录
    ​ admin.py django admin后台管理
    ​ apps.py 注册app使用
    ​ models.py 放所有数据库相关的模型类
    ​ tests.py 测试文件
    ​ views.py 处理业务逻辑的视图函数

    django基本配置及注意事项

    django小白必会三板斧

    HttpResponse 返回字符串

    render 返回html文件,可以给html页面传值

    def login(request):
    		user_dic = {'username':'jason','password':'123'}
    		return render(request,'login.html',{'xxx':user_dic})
    

    redirect 重定向

    ​ 1.可以直接写本站的路径后缀
    ​ 2.也可以全路径

    def home(request):
    	# return redirect('/login')  # 重定向
    	return redirect('https://www.baidu.com')  # 重定向
    

    注意:

    django默认是自动重启的

    ​ 重启机制

    ​ 内有检测机制,实时检测索引文件的变化。有时候会产生 你带吗还没写完,就自动报错的情况,不用管

    ​ 每次写完代码之后,自己手动重启

  • 相关阅读:
    【CLR in c#】事件
    IComparer 指定排序。
    【CLR in c#】属性
    C# Aspect-Oriented Programming(AOP) 利用多种模式实现动态代理
    设计模式六大原则(六): 开闭原则(Open Closed Principle)
    设计模式六大原则(五):迪米特法则(Law Of Demeter)
    设计模式六大原则(四):接口隔离原则(Interface Segregation Principle)
    设计模式六大原则(三):依赖倒置原则(Dependence Inversion Principle)
    设计模式六大原则(二):里氏替换原则(Liskov Substitution Principle)
    设计模式六大原则(一):单一职责原则(Single Responsibility Principle)
  • 原文地址:https://www.cnblogs.com/zqfzqf/p/11908906.html
Copyright © 2011-2022 走看看