精华内容
下载资源
问答
  • 究竟什么是网站前端框架?现在常用的网站前端框架都有哪些呢? 前端框架一般指用于简化网页设计的框架,比如,jquery,extjs,bootstrap等等,这些框架封装了一些功能,比如html文档操作,漂亮的各种控件(按钮,...

    相信很多企业在网站建设时都能了解到网站前端框架,但是对于网站的前端框架还是处于一种一知半解的状态。究竟什么是网站前端框架?现在常用的网站前端框架都有哪些呢?
    什么是网站前端框架?目前常用的网站前端框架都有哪些?
    前端框架一般指用于简化网页设计的框架,比如,jquery,extjs,bootstrap等等,这些框架封装了一些功能,比如html文档操作,漂亮的各种控件(按钮,表单等等)。
    使用前段框架可以降低界面开发周期和提高界面的美观性。
    有些框架比较轻量,比如jquery,有些框架比较重量,比如extjs。一般来说重量的框架会封装更多的功能,比如extjs,封装的grid控件有很强的数据展示和操作功能。
    而在选择前端框架时,现在有三大主流框架,根据使用的不同我们在大型超大型web应用开发上,看好Angular
    深度整合Typescript和Rxjs。ts解决了工程化的问题,rxjs解决了开发速度的问题。但是学习成本,可能对于Java,c#等OOP工程师来说比较容易上手,但是对于JavaScript工程师来说,少有工程化的经验,接受起来比较痛苦。当然,不只是Angular可以采用Typescript开发,很多其他的Dom库都可以,Angular相比他们的优势在于:
    1.零配置
    2.深度整合设计模式
    3.约定才是框架的本质
    尤其是第三条,相信很多天才程序员都能复现Angular的设计模式和功能,但是由于并非“框架”,没有其他程序员跟进,显然就不能适用于大型超大型应用,毕竟对于大项目来说,沟通往往会成为开发瓶颈。
    rxjs很多人认为太重,没有必要,当然你也可以用很不优雅的toPromise方法来处理异步操作,甚至直接用behaviorObject.value也可以,但是当异步操作繁杂,重复,非一致的时候,rxjs可以很优雅地保证数据的稳定。rxjs的运用一方面是为了处理这种复杂的异步逻辑,另一方面,就是为了让异步数据流可以声明,而不用像promise那样声明冗长,或者asyncawait那样函数化,响应式是基于数据的响应式而不是基于函数。
    小型应用上,看好vue
    其实绝大部分web应用,都应该只是小型应用。公司官网,论坛,甚至是规模不大的电子商务网站和基本功能的OA,ERP系统,都只是小型web应用。它们数据源稳定,对于运营的要求不高,但是对加载速度等都有很高的要求。这个时候,小巧的vue就成了首选。Proxy实现的响应式相比Angular的zone暴力代理和rxjs的复杂操作显得更加接地气,不需要额外地进行学习。对象式的声明在UI实现上速度更快。生态虽然没有react那么热闹但是小而美的库也很多,nuxt的实现值得点赞。
    个性化需求、中型应用,更倾向react
    在中大型应用中,不是一定要搞Java那一套的,而且在前端这种对工期要求很紧的领域,没必要因为添加新功能而更换新的平台,能用到rxjs和依赖注入的前端应用场景并不多。所以如果采用react,从项目一开始就渐进式地添加模块,往往更适合快速发展的产品。

    本文摘自青岛蓝衫互动官网,原文链接为:http://www.lanshanqingdao.com/front/772.html

    展开全文
  • Django框架基础教程():简单介绍Python Django框架

    万次阅读 多人点赞 2019-05-22 17:11:28
    Django框架基础(一):简单介绍Python Django框架,从零开始学Django框架。...Django是一个开源的Web应用框架,例如舆管家数据监测平台由Python写成。 Django采用了MVC的软件设计模式,即模型M,视图V和控制器C。 ...

    Django框架基础(一):简单介绍Python Django框架,从零开始学Django框架

    1、Django简介

    Python下有多款不同的 Web 框架,Django是最有代表性的一种。许多成功的网站和APP都基于Django。

    Django是一个开源的Web应用框架,例如舆管家数据监测平台由Python写成。

    Django采用了MVC的软件设计模式,即模型M,视图V和控制器C。

    2、Django的特点

    • 1) 强大的数据库功能:用python的类继承,几行代码就可以拥有一个动态的数据库操作API,如果需要也能执行SQL语句。
    • 2) 自带的强大的后台功能:几行代码就让网站拥有一个强大的后台,轻松管理内容。
    • 3) 优雅的网址:用正则匹配网址,传递到对应函数。
    • 4) 模板系统:强大,易扩展的模板系统,设计简易,代码和样式分开设计,更易管理。
    • 5) 缓存系统:与memcached或其它缓存系统联用,表现更出色,加载速度更快。
    • 6) 国际化:完全支持多语言应用,允许你定义翻译的字符,轻松翻译成不同国家的语言。

    3、Django项目目录

    • 1) urls.py:网址入口,关联到对应的views.py中的一个函数(或generic类),访问网址就对应一个函数。
    • 2) views.py:处理用户发出的请求,与urls.py对应, 通过渲染templates中的网页可以将显示内容,如登陆后的用户名,用户请求的数据等输出到网页。
    • 3) models.py:与数据库操作相关,存入或读取数据时用到,用不到数据库时可以不使用。
    • 4) forms.py:表单,用户在浏览器上输入数据提交,对数据的验证工作以及输入框的生成等工作,也可以不使用。
    • 5) templates文件夹:views.py中的函数渲染templates中的html模板,得到动态内容的网页,可以用缓存来提高速度。
    • 6) admin.py:后台,可以用很少的代码就拥有一个强大的后台。
    • 7) settings.py:Django 的配置文件,如 DEBUG 的开关,静态文件的位置等。

    4、Django基本命令

    1) 新建一个项目:

    1. django-admin.py startproject project-name

    在 windows 上如果报错,尝试用 django-admin 代替 django-admin.py 。

    2) 新建一个APP:

    1. python manage.py startapp app-name

    1. django-admin.py startapp app-name

    一般一个项目有多个app, 当然通用的app也可以在多个项目中使用。

    3) 启动服务器:

    1. python manage.py runserver 0.0.0.0:8000

    1. python manage.py runserver

    前者让其它电脑可连接到服务器,监听机器上所有ip的8000端口,访问时用电脑的ip代替 127.0.0.1(8000为端口号,如果不说明,则端口号默认为8000);后者在本电脑访问服务器,访问时ip为127.0.0.1。

    5、视图与网址

    views.py:

    from django.http import HttpResponse 
    def helloWorld(request): 
     return HttpResponse("Hello world! ") 
    

    urls.py:

    from django.conf.urls import url 
    from . import view 
    urlpatterns = [ 
     url(r'^$', view.helloWorld) 
    ] 
    

    启动服务器,并在浏览器访问:127.0.0.1:8000。

    修改后的urls.py:

    from django.conf.urls import url 
    from . import view 
    urlpatterns = [ 
     url(r'^helloWorld$', view.helloWorld) 
    ] 
    

    启动服务器,并在浏览器访问:127.0.0.1:8000/helloWorld。

    url() 函数:可以接收四个参数,分别是两个必选参数regex、view 和两个可选参数kwargs、name:

    ① regex:正则表达式,与之匹配的 URL 会执行对应的第二个参数 view。

    ② view:用于执行与正则表达式匹配的 URL 请求。

    ③ kwargs:视图使用的字典类型的参数。

    ④ name:用来反向获取 URL。

    6、Django模板

    1) 实例:

    ① 在app目录中,创建 templates 目录并建立 helloWorld.html文件:

    1. <h1>{{ helloWorld }}</h1>

    ② 向Django说明模板文件的路径,修改settings.py文件,修改 TEMPLATES 中的 DIRS 为 [BASE_DIR+"/templates",]。

    ③ 修改views.py:

    from django.shortcuts import render 
    def hello(request): 
     context = {} 
     context['helloWorld'] = 'Hello World!' 
     return render(request, 'helloWorld.html', context) 
    

    render使用了一个字典 context 作为参数,context 字典中元素的键值 "helloWorld" 对应了模板中的变量 "{{ helloWorld }}"。

    ④ 启动服务器,并在浏览器访问:127.0.0.1:8000/helloWorld。

    2) Django 模板标签

    ① if/else 标签

    if/else支持嵌套,{% if %} 标签接受and、or 或not关键字来对多个变量做判断,或对变量取反。

    1. {% if condition %}
    2. ...
    3. {% endif %}

    或者:

    1. {% if condition1 %}
    2. ...
    3. {% elif condiiton2 %}
    4. ...
    5. {% else %}
    6. ...
    7. {% endif %}

    ② for 标签

    {% for %} 允许在一个序列上迭代。支持嵌套。每一次循环中,模板系统会渲染在 {% for %} 和 {% endfor %} 之间的所有内容。

    1. <ul>
    2. {% for person in list %}
    3. <li>{{ person.name }}</li>
    4. {% endfor %}
    5. </ul>

    给标签增加一个 reversed 使得该列表被反向迭代:

    1. {% for person in list %}
    2. ...
    3. {% endfor %}

    ③ ifequal/ifnotequal 标签

    {% ifequal %} 标签比较两个值,当他们相等时,显示在 {% ifequal %} 和 {% endifequal %} 之中所有的值。和 {% if %} 类似, {% ifequal %} 支持可选的 {% else%} 标签。

    1. {% ifequal person1 person2 %}
    2. <h1>YES</h1>
    3. {% endifequal %}

    ④ 注释标签

    Django 注释使用 {# #}。

    ⑤ 过滤器

    模板过滤器可以在变量被显示前修改它,过滤器使用管道字符:

    {{ name|lower }}大写转换为小写。

    一个过滤器管道的输出又可以作为下一个管道的输入:

    {{ name|first|upper }}将第一个元素转化为大写。

    有些过滤器有参数,过滤器的参数跟随冒号之后并总是以双引号包含:

    {{ name|truncatewords:"3" }}显示变量的前3个词。

    addslashes:添加反斜杠到任何反斜杠、单引号或者双引号前面。

    date:按指定的格式字符串参数格式化date或datetime对象,如{{ pub_date|date:"F j, Y" }}。

    length:返回变量的长度。

    ⑥ include 标签

    {% include %} 标签允许在模板中包含其它的模板的内容。

    1. {% include "test.html" %}

    7、Django模型

    Django 对各种数据库提供了很好的支持,Django 为数据库提供了统一的调用API,软币网小编认为可以根据业务需求选择不同的数据库。

    以MYSQL数据库为例,安装 mysql 驱动的命令:sudo pip install mysqlclient。

    1) 数据库配置

    在项目的settings.py文件中找到 DATABASES 配置项,将其信息修改为:

    DATABASES = { 
     'default': { 
     'ENGINE': 'django.db.backends.mysql', # 或者使用 mysql.connector.django 
     'NAME': 'test', 
     'USER': 'test', 
     'PASSWORD': 'test123', 
     'HOST':'localhost', 
     'PORT':'3306', 
     } 
    } 

    这里添加了中文注释,所以需要在settings.py 文件头部添加 # -*- coding: UTF-8 -*-。

    2) 定义模型

    ① 创建APP:

    Django规定,如果要使用模型,必须要创建一个app,使用以下命令创建一个app:python manage.py startapp TestModel。

    ② 修改 TestModel/models.py 文件:

    from django.db import models 
    class Test(models.Model): 
     name = models.CharField(max_length=20) 

    类名代表了数据库表名,且继承了models.Model,类里面的字段代表数据表中的字段(name),数据类型则由CharField(相当于varchar)、DateField(相当于datetime), max_length 参数限定长度。

    ③ 在settings.py中找到INSTALLED_APPS这一项,添加:'TestModel'。

    ④ 在命令行中运行以下命令,创建数据表,表名为应用名_类名(如:TestModel_test):

    python manage.py migrate # 创建表结构 
    python manage.py makemigrations TestModel # 让Django知道模型有一些变更 
    python manage.py migrate TestModel # 创建表结构 

    3) 数据库操作

    添加database.py文件:

    from django.http import HttpResponse 
    from TestModel.models import Test 
    def database(request): 
     test = Test(name='Alice') 
     test.save() 
     return HttpResponse("<p>数据添加成功!</p>") 

    修改 urls.py:

    from django.conf.urls import * 
    from . import view,database 
    urlpatterns = [ 
     url(r'^hello$', view.hello), 
     url(r'^database$', database.database) 
    ] 

    启动服务器,并在浏览器访问:127.0.0.1:8000/database。

    ① 添加数据

    from django.http import HttpResponse 
    from TestModel.models import Test 
    def database(request): 
     test = Test(name='Alice') 
     test.save() 
     return HttpResponse("<p>数据添加成功!</p>") 

    ② 获取数据

    from django.http import HttpResponse 
    from TestModel.models import Test 
    def database(request): 
     # 初始化 
     response = "" 
     response1 = "" 
     # 通过objects这个模型管理器的all()获得所有数据行,相当于SQL中的SELECT * FROM 
     list = Test.objects.all() 
     # filter相当于SQL中的WHERE,可设置条件过滤结果 
     response2 = Test.objects.filter(id=1) 
     # 获取单个对象 
     response3 = Test.objects.get(id=1) 
     # 限制返回的数据,相当于SQL中的OFFSET 0 LIMIT 2; 
     Test.objects.order_by('name')[0:2] 
     # 数据排序 
     Test.objects.order_by("id") 
     # 上面的方法可以连锁使用 
     Test.objects.filter(name="Alice").order_by("id") 
     # 输出所有数据 
     for var in list: 
     response1 += var.name + " " 
     response = response1 
     return HttpResponse("<p>" + response + "</p>") 

    ③ 更新数据

    from django.http import HttpResponse 
    from TestModel.models import Test 
    def database(request): 
     # 修改id=1的name字段再save,相当于SQL中的UPDATE 
     test = Test.objects.get(id=1) 
     test.name='Alice' 
     test.save() 
     # 另一种方式 
     # Test.objects.filter(id=1).update(name='Alice) 
     # 修改所有的列 
     # Test.objects.all()..update(name='Google') 
     return HttpResponse("<p>数据修改成功</p>") 

    ④ 删除数据

    删除数据库中的对象只需调用该对象的delete()方法即可:

    from django.http import HttpResponse 
    from TestModel.models import Test 
    def database(request): 
     # 删除id=1的数据 
     test = Test.objects.get(id=1) 
     test.delete() 
     # 另外一种方式 
     # Test.objects.filter(id=1).delete() 
     # 删除所有数据 
     # Test.objects.all().delete() 
     return HttpResponse("<p>数据删除成功</p>") 

    8、Django表单

    1) Get方法

    ① 创建一个 search.py 文件,用于接收用户的请求:

    from django.http import HttpResponse 
    from django.shortcuts import render_to_response 
    # 表单 
    def search_form(request): 
     return render_to_response('search_form.html') 
     # 接收请求数据 
     def search(request): 
     request.encoding='utf-8' 
     if 'q' in request.GET: 
     message = '搜索的内容为: ' + request.GET['q'].encode('utf-8') 
     else: 
     message = '提交了空表单' 
     return HttpResponse(message) 

    ② 在templates中添加 search_form.html 表单:

    <!DOCTYPE html> 
    <html> 
     <head> 
     <meta charset="utf-8"> 
     <title></title> 
     </head> 
     <body> 
     <form action="/search" method="get"> 
     <input type="text" name="q"> 
     <input type="submit" value="搜索"> 
     </form> 
     </body> 
    </html> 

    ③ 修改urls.py:

    from django.conf.urls import url 
    from . import view,database,search 
    urlpatterns = [ 
     url(r'^helloWorld$', view.helloWorld), 
     url(r'^database$', database.database), 
     url(r'^search-form$', search.search_form), 
     url(r'^search$', search.search) 
    ] 

    ④ 启动服务器,并在浏览器访问:127.0.0.1:8000/search_form。

    2) Post方法

    ① 在templates中添加 post.html 表单:

    <!DOCTYPE html> 
    <html> 
     <head> 
     <meta charset="utf-8"> 
     <title></title> 
     </head> 
     <body> 
     <form action="/search-post" method="post"> 
     {% csrf_token %} 
     <input type="text" name="q"> 
     <input type="submit" value="搜索"> 
     </form> 
     <p>{{ rlt }}</p> 
     </body> 
    </html> 

    {% csrf_token %}标签:csrf 全称是 Cross Site Request Forgery,这是Django提供的防止伪装提交请求的功能。POST 方法提交的表格,必须有此标签。

    ② 新建 search2.py 文件并使用 search_post 函数来处理 POST 请求:

    from django.shortcuts import render 
    from django.views.decorators import csrf 
    # 接收POST请求数据 
    def search_post(request): 
     ctx ={} 
     if request.POST: 
     ctx['rlt'] = request.POST['q'] 
     return render(request, "post.html", ctx) 

    ③ 修改urls.py:

    from django.conf.urls import url 
    from . import view,database,search 
    urlpatterns = [ 
     url(r'^helloWorld$', view.helloWorld), 
     url(r'^database$', database.database), 
     url(r'^search-form$', search.search_form), 
     url(r'^search$', search.search) 
     url(r'^search-post$', search2.search_post) 
    ] 

    ④ 启动服务器,并在浏览器访问:127.0.0.1:8000/search_post。

     

    部分代码贡献来自:www.ruanally.com

    展开全文
  • 本系列课程除了非常详细的讲解Django框架本身的知识点以外,还讲解了web开发中所需要用到的技术,学完本系列课程后,您将独立做出一个具有后台管理系统,并且前端非常优美实用的网站。对于从事一份Python Web开发...
  • 什么是web框架


      我们常用的web前端框架其实简单称呼叫web框架,现阶段web前端技术成熟,从视觉体验到用户体验都是比较好的,这也是从简单到复杂的web前端框架技术实现的,在国内前端技术开发人员也是非常的多,市面上的前端框架可以说是眼花缭乱,这里写这篇文章就是让你在使用不同的前端框架的时候能够明确的知道自己的选择。


    Web前端框架工作原理:

      在我们讨论框架之前,我们需要理解 Web 如何“工作”的。为此,我们将深入挖掘你在浏览器里输入一个 URL 按下 Enter 之后都发生了什么。在你的浏览器中打开一个新的标签,浏览http://www.uileader.com。我们讨论为了显示这个页面,浏览器都做了什么事情(不关心 DNS 查询)。

    Web 服务器

      每个页面都以 HTML 的形式传送到你的浏览器中,HTML 是一种浏览器用来描述页面内容和结构的语言。那些负责发送 HTML 到浏览器的应用称之为“Web 服务器”,会让你迷惑的是,这些应用运行的机器通常也叫做 web 服务器。

      然而,最重要的是要理解,到最后所有的 web 应用要做的事情就是发送 HTML 到浏览器。不管应用的逻辑多么复杂,最终的结果总是将 HTML 发送到浏览器(我故意将应用可以响应像 JSON 或者 CSS 等不同类型的数据忽略掉,因为在概念上是相同的)。

    HTTP

      浏览器从 web 服务器(或者叫应用服务器)上使用 HTTP 协议下载网站,HTTP 协议是基于一种 请求-响应(request-response)模型的。客户端(你的浏览器)从运行在物理机器上的 web 应用请求数据,web 应用反过来对你的浏览器请求进行响应。

      重要的一点是,要记住通信总是由客户端(你的浏览器)发起的,服务器(也就是 web 服务器)没有办法创建一个链接,发送没有经过请求的数据给你的浏览器。如果你从 web 服务器上接收到数据,一定是因为你的浏览器显示地发送了请求。

    HTTP Methods

      在 HTTP 协议中,每条报文都关联方法(method 或者 verb),不同的 HTTP 方法对应客户端可以发送的逻辑上不同类型的请求,反过来也代表了客户端的不同意图。例如,请求一个 web 页面的 HTML,与提交一个表单在逻辑上是不同的,所以这两种行为就需要使用不同的方法。

    HTTP GET

    GET 方法就像其听起来的那样,从 web 服务器上 get(请求)数据。GET 请求是到目前位置最常见的一种 HTTP 请求,在一次 GET 请求过程中,web 应用对请求页面的 HTML 进行响应之外,就不需要做任何事情了。特别的,web 应用在 GET 请求的结果中,不应该改变应用的状态(比如,不能基于 GET 请求创建一个新帐号)。正是因为这个原因,GET 请求通常认为是“安全”的,因为他们不会导致应用的改变。

    HTTP POST

      显然,除了简单的查看页面之外,应该还有更多与网站进行交互的操作。我们也能够向应用发送数据,例如通过表单。为了达到这样的目的,就需要一种不同类型的请求方法:POSTPOST 请求通常携带由用户输入的数据,web 应用收到之后会产生一些行为。通过在表单里输入你的信息登录一个网站,就是 POST 表单的数据给 web 应用的。

      不同于 GET 请求,POST 请求通常会导致应用状态的改变。在我们的例子中,当表单 POST 之后,一个新的账户被创建。不同于 GET 请求,POST 请求不总是生成一个新的 HTML 页面发送到客户端,而是客户端使用响应的响应码(response code)来决定对应用的操作是否成功。

    HTTTP Response Codes

      通常来说,web 服务器返回 200 的响应码,意思是,“我已经完成了你要求我做的事情,一切都正常”。响应码总是一个三位数字的代号,web 应用在每个响应的同时都发送一个这样的代号,表明给定的请求的结果。响应码 200 字面意思是“OK”,是响应一个 GET 请求大多情况下都使用的代号。然而对于 POST 请求, 可能会有 204(“No Content”)发送回来,意思是“一切都正常,但是我不准备向你显示任何东西”。

    Web 应用

      你可以仅仅使用 HTTP GET POST 做很多事情。一个应用程序负责去接收一个 HTTP 请求,同时给以 HTTP 响应,通常包含了请求页面的 HTMLPOST 请求会引起 web 应用做出一些行为,可能是往数据库中添加一条记录这样的。还有很多其它的 HTTP 方法,但是我们目前只关注 GET POST

      那么最简单的 web 应用是什么样的呢?我们可以写一个应用,让它一直监听 80 端口(著名的 HTTP 端口,几乎所有 HTTP 都发送到这个端口上)。一旦它接收到等待的客户端发送的请求连接,然后它就会回复一些简单的 HTML

      下面是程序的代码:

    import socketHOST = ''PORT = 80listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)listen_socket.bind((HOST, PORT))listen_socket.listen(1)connection, address = listen_socket.accept()request = connection.recv(1024)connection.sendall(b"""HTTP/1.1 200 OKContent-type: text/html

    <html>    <body>        <h1>Hello, World!</h1>    </body></html>""")connection.close()

      (如果上面的代码不工作,试着将 PORT 改为类似 8080 这样的端口。)

      这个代码接收简单的链接和简单的请求,不管请求的 URL 是什么,它都会响应 HTTP 200(所以,这不是一个真正意义上的 web 服务器)。Content-type:text/html 行代码的是 header 字段,header 用来提供请求或者响应的元信息。这样,我们就告诉了客户端接下来的数据是 HTML

    请求的剖析

      如果看一下测试上面程序的 HTTP 请求,你会发现它和 HTTP 响应非常类似。第一行<HTTP Method> <URL> <HTTP version>,在这个例子中是 GET / HTTP/1.0。第一行之后就是一些类似Accept: */* 这样的头(意思是我们希望在响应中接收任何内容)。

      我们响应和请求有着类似的第一行,格式是<HTTP version> <HTTP Status-code> <Status-code Reason Phrase>,在外面的例子中是HTTP/1.1 200 OK 。接下来是头部,与请求的头部有着相同的格式。最后是响应的实际包含的内容。注意,这会被解释为一个字符串或者二进制文件, Content-type 头告诉客户端怎样去解释响应。

      解决路由和模板两大问题

      围绕建立 web 应用的所有问题中,两个问题尤其突出:

    1.我们如何将请求的 URL 映射到处理它的代码上?

    2.我们怎样动态地构造请求的 HTML 返回给客户端,HTML 中带有计算得到的值或者从数据库中取出来的信息?

      每个 web 框架都以某种方法来解决这些问题,也有很多不同的解决方案。用例子来说明更容易理解,所以我将针对这些问题讨论 Django Flask 的解决方案。但是,首先我们还需要简单讨论一下 MVC

    Django 中的 MVC

    Django 充分利用 MVC 设计模式。 MVC,也就是 Model-View-Controller (模型-视图-控制器),是一种将应用的不同功能从逻辑上划分开。models 代表的是类似数据库表的资源(与 Python 中用 class 来对真实世界目标建模使用的方法大体相同)。controls 包括应用的业务逻辑,对 models 进行操作。为了动态生成代表页面的 HTML,需要 views 给出所有要动态生成页面的 HTML 的信息。

      在 Django 中有点让人困惑的是,controllers 被称做 views,而 views 被称为 templates。除了名字上的有点奇怪,Django 很好地实现了 MVC 的体系架构。

    Django 中的路由

      路由是处理请求 URL 到负责生成相关的 HTML 的代码之间映射的过程。在简单的情形下,所有的请求都是有相同的代码来处理(就像我们之前的例子那样)。变得稍微复杂一点,每个 URL 对应一个 view function 。举例来说,如果请求 www.foo.com/bar 这样的 URL,调用 handler_bar() 这样的函数来产生响应。我们可以建立这样的映射表,枚举出我们应用支持的所有 URL 与它们相关的函数。

      然而,当 URL 中包含有用的数据,例如资源的 ID(像这样 www.foo.com/users/3/) ,那么这种方法将变得非常臃肿。我们如何将 URL 映射到一个 view 函数,同时如何利用我们想显示 ID 3 的用户?

    Django 的答案是,将 URL 正则表达式映射到可以带参数的 view 函数。例如,我假设匹配^/users/(?P<id>\d+)/$ URL 调用 display_user(id) 这样的函数,这儿参数 id 是正则表达式中匹配的 id。这种方法,任何 /users/<some_number>/ 这样的 URL 都会映射到 display_user 函数。这些正则表达式可以非常复杂,包含关键字和参数。

    Flask 中的路由

    Flask 采取了一点不同的方法。将一个函数和请求的 URL 关联起来的标准方法是通过使用 route() 装饰器。下面是 Flask 代码,在功能上和上面正则表达式方法相同:

    @app.route('/users/<id:int>/')

    def display_user(id):

    # ...

      就像你看到的这样,装饰器使用几乎最简单的正则表达式的形式来将 URL 映射到参数。通过传递给route() URL 中包含的 <name:type> 指令,可以提取到参数。路由像 /info/about_us.html 这样的静态 URL,可以像你预想的这样 @app.route('/info/about_us.html') 处理。

    通过 Templates 产生 HTML

      继续上面的例子,一旦我们有合适的代码映射到正确的 URL,我们如何动态生成 HTML?对于 Django Flask,答案都是通过 HTML Templating

    HTML Templating 和使用 str.format() 类似:需要动态输出值的地方使用占位符填充,这些占位符后来通过 str.format() 函数用参数替换掉。想象一下,整个 web 页面就是一个字符串,用括号标明动态数据的位置,最后再调用 str.format() Django 模板和 Flask 使用的模板引擎 Jinja2 都使用的是这种方法。

      然而,不是所有的模板引擎都能相同的功能。Django 支持在模板里基本的编程,而 Jinja2 只能让你执行特定的代码(不是真正意义上的代码,但也差不多)。Jinja2 可以缓存渲染之后的模板,让接下来具有相同参数的请求可以直接从缓存中返回结果,而不是用再次花大力气渲染。

    数据库交互

    Django 有着“功能齐全”的设计哲学,其中包含了一个 ORM(Object Realational Mapper,对象关系映射)ORM 的目的有两方面:一是将 Python class 与数据库表建立映射,而是剥离出不同数据库引擎直接的差异。没人喜欢 ORM,因为在不同的域之间映射永远不完美,然而这还在承受范围之内。Django 是功能齐全的,而 Flask 是一个微框架,不包括 ORM,尽管它对 SQLAlchemy 兼容性非常好,SQLAlchemy Django ORM 的最大也是唯一的竞争对手。

      内嵌 ORM Django 有能力创建一个功能丰富的 CRUD 应用,从服务器端角度来看,CRUDCreateRead Update Delete)应用非常适合使用 web 框架技术。Django Flask-SQLchemy 可以直接对每个 model 进行不同的 CRUD 操作。

     总结:

      到现在为止,web前端框架的目的应该非常清晰了:向程序员隐藏了处理 HTTP 请求和响应相关的基础代码。至于隐藏多少这取决于不同的框架,Django Flask 走向了两个极端:Django 包括了每种情形,几乎成了它致命的一点;Flask 立足于“微框架”,仅仅实现 web 应用需要的最小功能,其它的不常用的 web 框架任务交由第三方库来完成。

      但是最后要记住的是,Python web 框架都以相同的方式工作的:它们接收 HTTP 请求,分派代码,产生 HTML,创建带有内容的 HTTP 响应。事实上,所有主流的服务器端框架都以这种方式工作的( JavaScript 框架除外)。但愿了解了这些框架的目的,你能够在不同的框架之间选择适合你应用的框架进行开发。

    展开全文
  • jQuery 库可以通过一行简单的标记被添加到...jQuery是一个轻量级的"写的少,做的多"的JavaScript库。 脚本之家小编补充: 优点: 相比于原生的js代码,用很少的代码就可以实现很强大的功能,并且兼容性也好,现在

    jQuery 库可以通过一行简单的标记被添加到网页中。

    您需要具备的基础知识
    在您开始学习 jQuery 之前,您应该对以下知识有基本的了解:

    HTML
    CSS
    JavaScript
    如果您需要首先学习这些科目,请在我们的 首页 查找这些教程。

    什么是 jQuery ?
    jQuery是一个JavaScript函数库。

    jQuery是一个轻量级的"写的少,做的多"的JavaScript库。

    脚本之家小编补充:

    优点:

    相比于原生的js代码,用很少的代码就可以实现很强大的功能,并且兼容性也好,现在很多用原生js考虑支持多浏览器等等,尤其是jquery的选择器比较强大,一般多用于实际项目的使用,减少开发周期,一般公司都会要求用jquery,一般人的js达不到这种水平。

    缺点:

    但对于刚开始接触js的同学就是用这个是不利于学习的,很多人可能会使用jquery却不太会写原生的js了,不利于个人技术的提升, 所以对于初期js学习者可以先用原生的js练练手,对比着jquery是学习,要不以后就不会出现比jquery更好的js库了。

    jQuery库包含以下功能:

    HTML 元素选取
    HTML 元素操作
    CSS 操作
    HTML 事件函数
    JavaScript 特效和动画
    HTML DOM 遍历和修改
    AJAX
    Utilities
    提示: 除此之外,Jquery还提供了大量的插件。

    为什么使用 jQuery ?
    目前网络上有大量开源的 JS 框架, 但是 jQuery 是目前最流行的 JS 框架,而且提供了大量的扩展。

    很多大公司都在使用 jQuery, 例如:

    Google
    Microsoft
    IBM
    Netflix

    jQuery是否适用于所有浏览器?
    jQuery 团体知道JS在不同浏览器中存在着大量的兼容性问题,目前jQuery兼容于所有主流浏览器, 包括Internet Explorer 6!

    jquery是基于javascript类库的框架, 它里面提供了许多javascript类库,和一些css样式表的封装, 使用起来比较方便, 简化了用户与浏览器的交互, 提高了系统的性能和开发效率。

    jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。

    jQuery的核心特性可以总结为:具有独特的链式语法和短小清晰的多功能接口;具有高效灵活的css选择器,并且可对CSS选择器进行扩展;拥有便捷的插件扩展机制和丰富的插件。jQuery兼容各种主流浏览器,如IE 6.0+、FF 1.5+、Safari 2.0+、Opera 9.0+等。

    语言特点
    1、快速获取文档元素

    jQuery的选择机制构建于Css的选择器,它提供了快速查询DOM文档中元素的能力,而且大大强化了JavaScript中获取页面元素的方式。

    2、提供漂亮的页面动态效果

    jQuery中内置了一系列的动画效果,可以开发出非常漂亮的网页,许多网站都使用jQuery的内置的效果,比如淡入淡出、元素移除等动态特效。

    3、创建AJAX无刷新网页

    AJAX是异步的JavaScript和ML的简称,可以开发出非常灵敏无刷新的网页,特别是开发服务器端网页时,比如PHP网站,需要往返地与服务器通信,如果不使用AJAX,每次数据更新不得不重新刷新网页,而使用AJAX特效后,可以对页面进行局部刷新,提供动态的效果。

    到此这篇关于jQuery是用来干什么的 jquery其实就是一个js框架的文章就介绍到这了

    展开全文
  • 前端框架MVVM是什么(整理)

    千次阅读 多人点赞 2020-08-06 06:25:42
    句话总结:vm层(视图模型层)通过接口从后台m层(model层)请求数据,vm层继而和v(view层)实现数据的双向绑定。
  • 前端框架存在的意义

    千次阅读 2017-11-23 17:30:48
    对于前端框架存在的意义?这问题我思考了很久,稍微有一点头绪,把自己的想法说出来我感觉非常的爽,前端框架什么存在?这都是我们应该考虑的问题。
  • 一个项目用什么框架

    千次阅读 2018-06-19 12:08:20
    就拿我接触错的几种框架举例:yaf框架优点: 这个框架特别nice ,速度快个人除了tp5久喜欢这个框架啦用C语言开发的PHP框架, 相比原生的PHP, 几乎不会带来额外的性能开销.所有的框架类, 不需要编译, 在PHP启动的时候...
  • 什么是前端框架与后端框架

    万次阅读 2017-05-22 10:11:40
    什么是框架框架(Framework)是整个或部分系统的可重用设计,表现为组抽象构件及构件实例间交互的方法;另种定义认为,框架是可被应用开发者定制的应用骨架。
  • 所以,Web程序员灵活运用Web开发框架显得更为重要。下面为大家简单的介绍一下Web框架的基本内容,希望对大家有帮助。 Web框架(Web framework)或者叫做Web应用框架(Web application framework),是用于进行Web开发的...
  • 使用html框架制作一个网站布局

    千次阅读 多人点赞 2019-10-15 09:42:48
    使用html框架制作一个网站布局 <html> <head> <meta charset="utf-8" /> <title> html的框架用法</title> </head> <!-- frameborder:指定是否显示边框,等于"1...
  • 什么是框架(包括前端框架和后端框架) ...可以说,一个框架一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例之...
  • Express框架什么

    千次阅读 2018-05-07 19:51:00
    1、express框架:基于node.js的web应用框架,可快速搭建一个完整功能的网站,丰富的HTTP工具以及来自Connect框架的中间件随取随用。 二、Express 简介 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了...
  • bootstrap框架什么

    千次阅读 2018-06-28 16:02:25
    Bootstrap——优秀的开源前端框架 ...Bootstrap是著名的社交网站、微博的先驱Twitter在2011年8月推出的开源WEB前端框架,集合CSS和HTML,使用了最新的浏览器技术,为快速WEB开发提供了一套前端工具包
  • SSH框架实现小型购物网站,包括前台和后台系统
  • 一个免费的java权限后台管理系统框架

    千次下载 热门讨论 2015-01-23 17:52:35
    java权限后台开发框架,采用spring + srpingsecurity + springMVC + Hibernate + freemarker + jquery 等技术实现,页面及源文件打包发布程序。 完整的功能应用,包括:后台权限、人员机构、参数代码、角色权限、...
  • 一个不错的BS框架源码(c#)

    热门讨论 2011-03-29 11:05:11
    一个不错的BS框架源码(c#) 一个不错的BS框架源码(c#) 框架程序
  • Bootstrap开发框架视频教程

    千人学习 2017-01-01 10:10:52
    Bootstrap入门培训课程,Bootstrap是由Twitter推出的一个前台页面开发框架,在行业之中使用较为广泛。该视频教程包括Bootstrap开发入门、十二栅格布局、CSS基础样式、表单样式、CSS基础样式、表单样式、扩展组件、...
  • 什么是 web 框架

    千次阅读 2018-04-22 11:46:42
    什么是 web 框架? Web 应用框架,或者简单的说是“Web 框架”,其实是建立 web 应用的种方式。从简单的博客系统到复杂的富 AJAX 应用,web 上每页面都是通过写代码来生成的。我发现很多人都热衷于学习 web ...
  • 什么是关键字驱动框架

    万次阅读 2018-03-19 20:37:15
    什么是关键字驱动框架? 关键字驱动框架种功能自动化测试框架,它也被称为表格驱动测试或者基于动作字的测试。关键字驱动的框架的基本工作是将测试用例分成四不同的部分。首先是测试步骤(Test Step),二是...
  • 常见python爬虫框架

    万次阅读 2017-07-21 16:26:34
    、python爬虫框架  一些爬虫项目的半成品 二、常见python爬虫框架  (1)Scrapy:很强大的爬虫框架,可以满足简单的页面爬取(比如可以明确获知url pattern的情况)。用这个框架可以轻松爬下来如亚马逊商品...
  • 150讲轻松学习Python网络爬虫

    万人学习 2019-05-16 15:30:54
    通过爬虫进阶的知识点我们能应付大量的反爬网站,而Scrapy框架作为一个专业的爬虫框架,使用他可以快速提高我们编写爬虫程序的效率和速度。另外如果一台机器不能满足你的需求,我们可以用分布式爬虫让多台机器帮助...
  • 前端框架

    千次阅读 2016-05-10 17:04:13
    前端框架
  • 本程序使用python搭建了一个小型网址查询网站(附详细代码)(输入网址,给出该网址排名,访问量,注册信息等),因为小型(所以选择了轻量级的flask框架)。 本网站具体实现的功能如下: 拥有一个小型的数据库,能...
  • 一个框架的详细步骤

    万次阅读 多人点赞 2016-05-31 10:44:15
    所谓定位就是回答几个问题,我出于什么目的要写一个框架,我的这个框架是干什么的,有什么特性适用于什么场景,我的这个框架的用户对象是谁,他们会怎么使用,框架由谁维护将来怎么发展等等。 如果你打算写框架,...
  • 从零开始写一个框架的详细步骤

    千次阅读 2018-06-26 15:46:48
    https://blog.csdn.net/liu88010988/article/details/51547592定位所谓定位就是回答几个问题,我出于什么目的要写一个框架,我的这个框架是干什么的,有什么特性适用于什么场景,我的这个框架的用户对象是谁,他们会...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 474,555
精华内容 189,822
关键字:

一个网站的框架是什么