WEP开发-----Django框架初级应用

初识Django

Python的WEB框架有Django、Tornado、Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM、模型绑定、模板引擎、缓存、Session等诸多功能。

基本配置

day 48
    自己写的wep框架(自己写的代码)
    服务端
    1.起服务(ip:port) 等待连接(监听)
    4.服务端接收请求
    5.返回响应

    请求和响应

    get请求
        请求头
            HTTP1.1 URL 200ok
            \r\n
        \r\n\r\n
        请求体(没有)
            \r\n\r\n

    post请求
        请求头
            HTTP1.1 URL 200ok     url里面是请求数据
            \r\n
        \r\n\r\n
        请求体
            username:alex
            password:dashabi

    客户端(浏览器)
    2.浏览器连接服务器
    3.发送请求

Django
    Django安装与使用

    1. pip3 -V   检查是否安装过
    2. pip3 install Django   下载安装
    3. Django-admin   查看参数
    4. 配置环境变量  把
    5.命令行创建一个Django 项目  django-admin startproject pys7
    创建的文名字随意
    6.cd pys7
    7.python manage.py runserver
    8.有一个db.数据库文件  不需要 可以直接删除
    9.manage.py  是管理者   管理django项目的   有很多命令
    例如启动命令
    10.同名的是项目文件夹  不要动
    11.urls.py  是函数和uel的对应文件夹  配置对应关系
    12.setting.py  是配置相关
    13.wsgi.py  是管server的服务的  消息管理(了解)
    14.views.py  自己写的函数  统一放在这里
    15.__init__.py
    16.templates   存放模板文件的(html文件)    index.html

    13.socket服务端 有第三方的做的 不需要管收发消息了
    14.wep应用服务器    wep server   他们之间有个规则  wsgi协议 处理请求 分发请求
    15.我们写的都是wep应用   只需要关心请求的url 和回复的页面

    16.pycharm里面创建一个django文件
    17.templates  里面放模板文件

    18.框架做的作用   前端
    19.python manage.py runserver 127.0.0.1:8888 就可以改端口ip
    20.回请求 需要按要求回  给一个Http的响应    包一下函数请求
       from django.shortcuts import HttpResponse
    21.#用户名 密码  报头等 都是request
        # return HttpResponse("ok")
        #包装成Http请求发给server端   然后再返回request 就代表了请求的所有内容 包括 参数 数据
    22.cd cd G:\学习盘\python文件夹\.idea\代码文件夹\7期代码文件夹\django\myweb

    23.修改配置文件
        -路径   模板文件夹的路径(TEMPSLTES=[‘DIRS‘:[os.path.join(BASE_DIR,‘static‘)]])
        -注释掉一个CSRF的中间件
        -静态文件路径
            STATIC_URL=    "/static/"  在html文件上就用这个开头来引用静态文件

            STEMPSLTES_DIRS=
                os.path.join(BASE_DIR,‘static‘)

    24.新手必备三件套
        from django.shortcuts impot
            httpresponse   你写什么就回什么  字符串
            render        渲染(request,‘index.html‘,{‘name‘:‘alex‘})
            redirect      (你要跳转的url)

    24.1 request:
            自己写的函数里面的形参(代表了所有请求的相关内容)
            request.mechod
            request.GET
                url里面有参数的时候
                request.GET.get()

            request.POST
                获取请求体里面的数据
                request.POST.get()

    25.模板语言:
            {{变量名}}error

            {%for i in class_list%}
                {{i.name}}
                {{i.id}}
            {%endfor%}

            {%if 条件%}
                要做的事
            {%else%}
                要做的事
            {%endif%}

        26.AJAX
            偷偷的发请求(页面不刷新)
            区别于from表单的提交方式
            基于jquery的AJAX

            $.ajax({
            url:‘/url/‘
            type:‘post‘
            data:{‘name‘:‘alex‘}
            success:function(data){
            //data就是后端发过来的数据字符串
            //前端做反序列化
            var dataobj=JSON.parse

            }

            })

        27.后端序列化

基本配置

 1 概述:
 2      静态文件交由Web服务器处理,Django本身不处理静态文件。简单的处理逻辑如下(以nginx为例):
 3               URI请求-----> 按照Web服务器里面的配置规则先处理,以nginx为例,主要求配置在nginx.
 4                              conf里的location
 5                          |---------->如果是静态文件,则由nginx直接处理
 6                          |---------->如果不是则交由Django处理,Django根据urls.py里面的规则进行匹配
 7     以上是部署到Web服务器后的处理方式,为了便于开发,Django提供了在开发环境的对静态文件的处理机制,方法是这样:
 8
 9 STATIC配置:
10 STATIC主要指的是如css,js,images这样文件:
11 TATIC_URL = ‘/static/‘      # 别名
12 STATICFILES_DIRS = (
13             os.path.join(BASE_DIR,"static"),  #实际名 ,即实际文件夹的名字
14         )
15
16 ‘‘‘
17
18 注意点1:
19  django对引用名和实际名进行映射,引用时,只能按照引用名来,不能按实际名去找
20         <script src="/statics/jquery-3.1.1.js"></script>
21         ------error-----不能直接用,必须用STATIC_URL = ‘/static/‘:
22         <script src="/static/jquery-3.1.1.js"></script>
23
24 注意点2:
25  STATICFILES_DIRS = (
26     ("app01",os.path.join(BASE_DIR, "app01/statics")),
27         )
28
29  <script src="/static/app01/jquery.js"></script>
30
31 ‘‘‘

基本配置二

MTV模型*****

Django的MTV分别代表:models(数据库,模型)   templates(html模板)  views(业务逻辑处理)          --> MTV

Model(模型):负责业务对象与数据库的对象(ORM)

Template(模版):负责如何把页面展示给用户

View(视图):负责业务逻辑,并在适当的时候调用Model和Template

此外,Django还有一个urls分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template

视图层--路由配置系统(views/urls)

URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表;

你就是以这种方式告诉Django,对于这个URL调用执行这段代码,对于那个URL调用那段代码

 1 urlpatterns = [
 2     url(正则表达式, views视图函数,参数,别名),
 3 ]
 4
 5 参数说明:
 6
 7     一个正则表达式字符串
 8     一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串
 9     可选的要传递给视图函数的默认参数(字典形式)
10     一个可选的name参数

路由分发

单一路由对应   :    url(r‘^index$‘, views.index),

基于正则的路由

from django.conf.urls import url

from . import views

urlpatterns = [
    url(r‘^articles/2003/$‘, views.special_case_2003),
    url(r‘^articles/([0-9]{4})/$‘, views.year_archive),
    url(r‘^articles/([0-9]{4})/([0-9]{2})/$‘, views.month_archive),
    url(r‘^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$‘, views.article_detail),
]

 ‘‘‘
    NOTE:
    1 一旦匹配成功则不再继续
    2 若要从URL 中捕获一个值,只需要在它周围放置一对圆括号。
    3 不需要添加一个前导的反斜杠,因为每个URL 都有。例如,应该是^articles 而不是 ^/articles。
    4 每个正则表达式前面的‘r‘ 是可选的但是建议加上。

一些请求的例子:

    /articles/2005/3/ 不匹配任何URL 模式,因为列表中的第三个模式要求月份应该是两个数字。
    /articles/2003/ 将匹配列表中的第一个模式不是第二个,因为模式按顺序匹配,第一个会首先测试是否匹配。
    /articles/2005/03/ 请求将匹配列表中的第三个模式。Django 将调用函数
                       views.month_archive(request, ‘2005‘, ‘03‘)。
    ‘‘‘

正则的路由

分组

下面的示例使用简单的、没有命名的正则表达式组(通过圆括号)来捕获URL 中的值并以位置 参数传递给视图。在更高级的用法中,可以使用命名的正则表达式组来捕获URL 中的值并以关键字 参数传递给视图。

在Python 正则表达式中,命名正则表达式组的语法是(?P<name>pattern),其中name 是组的名称,pattern 是要匹配的模式。

############################无命名

#相当于传参数 

url(r‘^index/(\d{4})‘,views.index)

    def index(request,arg):
        return HttpResponse(arg)    

#url访问http://127.0.0.1:8000/index/1113

#接受两个参数

url(r‘^index/(\d{4})/(\d{2})‘,views.index)

    def index(request,arg,arg1):
        return HttpResponse("year: %s month: %s"%(arg,arg1))

#url访问http://127.0.0.1:8000/index/2017/06
    year: 2017 month: 06

############################有命名
url(r‘^index/(?P<year>\d{4})/(?P<month>\d{2})‘,views.index)

    def index(request,year,month):
        return HttpResponse("year: %s month: %s"%(year,month))

#url访问http://127.0.0.1:8000/index/2017/06
    year: 2017 month: 06  

有名/无名 分组

name参数

 name参数:
        url(r‘^login.html/‘, views.login,name="Login"), # login(request)
        in template:
            action="{% url ‘Login‘ %}"
			<a href=‘{% url ‘Login‘ %}‘>click</a>

模板语言与反向解析

反向解析:

Django 提供一个办法是让URL 映射是URL 设计唯一的地方。你填充你的URLconf,然后可以双向使用它:

  • 根据用户/浏览器发起的URL 请求,它调用正确的Django 视图,并从URL 中提取它的参数需要的值。
  • 根据Django 视图的标识和将要传递给它的参数的值,获取与之关联的URL。

第一种方式是我们在前面的章节中一直讨论的用法。第二种方式叫做反向解析URL、反向URL 匹配、反向URL 查询或者简单的URL 反查。

在需要URL 的地方,对于不同层级,Django 提供不同的工具用于URL 反查:

  • 在模板中:使用url 模板标签。
  • 在Python 代码中:使用django.core.urlresolvers.reverse() 函数。
  • 在更高层的与处理Django 模型实例相关的代码中:使用get_absolute_url() 方法。

模板语言: HTML代码+模板语法

模板的创建过程中,读取模板语言,将获取的数据插入到写好的模板中,最后将信息返回给用户

该语言可以实现数据展示,模版包括在使用时会被值替换掉的 变量,和控制模版逻辑的 标签。

也就是执行函数的变量 与 HTML中的特殊标签和变量的替换

在 Django 模板中遍历复杂数据结构的关键是句点字符  .

语法:
1.{{var_name}}

模板执行函数

def index(request):
    import datetime
    s="hello"
    l=[111,222,333]    # 列表
    dic={"name":"yuan","age":18}  # 字典
    date = datetime.date(1993, 5, 2)   # 日期对象

    class Person(object):
        def __init__(self,name):
            self.name=name

    person_yuan=Person("yuan")  # 自定义类对象
    person_egon=Person("egon")
    person_alex=Person("alex")

    person_list=[person_yuan,person_egon,person_alex]

    return render(request,"index.html",{"l":l,"dic":dic,"date":date,"person_list":person_list})  

template中html中替换的模板语言:
<h4>{{s}}</h4>
<h4>列表:{{ l.0 }}</h4>
<h4>列表:{{ l.2 }}</h4>
<h4>字典:{{ dic.name }}</h4>
<h4>日期:{{ date.year }}</h4>
<h4>类对象列表:{{ person_list.0.name }}</h4>

注意:句点符也可以用来引用对象的方法(无参数方法):

  <h4>字典:{{ dic.name.upper }}</h4>

 
时间: 2024-10-11 16:04:51

WEP开发-----Django框架初级应用的相关文章

Django框架开发中避免表单重复提交

Form表单做为web2.0时代的重要角色,也是我们与web网站进行数据交互的重要渠道,但是大家在web网站开发过程中,都会遇到一个问题,那就是如何避免表单重复提交,我们可不确定用户可在提交了一个表单后,是否有足够的耐心等待我们的程序加载完成,如果此时用户不耐烦的在前台重复刷新页面,那么就会造成数据重复提交.信息不准确,因此我们在程序设计时一定要规避这样的问题,接下来介绍一下在Django框架开发中如何避免此问题. 首先说明一下Http协议中两种非常常见的方法GET和POST. 1.GET方法往

Python Django 框架开发

参考文档: http://python.usyiyi.cn/django_182/intro/tutorial01.html #Django 1.8.2 文档 http://www.ziqiangxuetang.com/django/django-admin.html #Django 基础教程 1-1.安装Django框架(官网:https://www.djangoproject.com) pip install Django==1.9.1 1-2.创建一个网站项目 django-admin s

Windows上python开发--2安装django框架

上一篇文章中讲了如何在windows上安装和开发python.这篇文章需要在上一篇的基数上进行.首先确保你的windows上python可以正常运行. 在安装django之前,我们应该先安装一个esay_install 的python工具,通过该工具可以很轻松安装各种扩展的框架和package. 不用你先到第三方网站下载tar.gz 包,然后用python setup.py install 安装. 1.下载安装easy-install 的tools. easy-install 的官方地址: ht

移动开发主流框架的选取以及技术选型方案解析

传统的移动开发模式主要分为三种,Native App,Web App 和 Hybrid App,对于目前微信端比较火爆的开发平台小程序,或者其他厂商推广的流应用.轻应用等开发方式,基本都离不开H5的支撑.目前App前端开发主流框架RN,Ionic,Vue都发展得不错.但是业务需求的快速发展,有些框架并不能够满足他们的需求,在不同的业务场景,受诸多约束因素的影响,研发团队应该如何在前端框架上做好选型? 根据目前51CTO社群(群号312724475)中大部分移动开发领域的开发者实际项目经验,我们邀

Django框架&lt;一&gt;

Django框架 Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. 一.django的安装实现和目录介绍 1.django实现流程 django #安装: pip3 install django 添加环境变量 #1 创建project django-admin startproject mysite ---mysite ---settings.p

第三百零三节,Django框架介绍

Django框架介绍 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模式,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件.并于2005年7月在BSD许可证下发布. 这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的. Django框架,流程图

Python学习(三) Django框架简单搭建

为了快速学习Python进行Web的开发,所以我不准备从Python的基础学起,直接从Django框架入手,边学框架边学Python的基础知识. 下面就开始Django的快速开发之旅吧. 关于Django框架1.8的英文文档在其官网上都有,地址 https://docs.djangoproject.com/en/1.8/intro/ Python的开发手册地址:https://pythonspot.com/getting-started/ https://docs.djangoproject.c

Django - Django框架 简单介绍

Django框架 简单介绍 本文地址: http://blog.csdn.net/caroline_wendy/article/details/29172271 1. 介绍 Django是一个开放源码的Web应用框架, 由Python写成. 採用了MVC的软件设计模式, 即模型M, 视图V和控制器C. 它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的站点的, 并于2005年7月在BSD许可证下公布. 这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的.

2、Django框架介绍

ü  Django是采用类似于MVC的MTV模式进行WEB开发. ü  核心100%是用python编写 ü  项目开发需要的知识有:python基础知识.面向对象.MVC/MTV.数据库(主要是ORM模式).html. 2.1.Django框架模式 Django的主要目的是简便.快速地开发数据库驱动的网站——动态网站.它强调代码复用,多个组件可以方便地以“插件”形式服务于整个框架,因此它有许多功能强大的第三方插件.Django强调快速开发,用Django开发一个Web网站非常迅速. http: