Web框架Django使用概览

Python Web 框架中 Django 框架 Django是一个高级的Python Web 框架,他鼓励快速开发和干净、使用的设计。Django遵循MVC(模型-视图-模板)设计模式,旨在帮助开发者以更少的代码完成更多的工作。它提供了很多内置的功能,比如用户认证,内容管理等,非常适合快速开发数据库驱动的网站。 阅读详情

Web框架Django使用概览

标签: django python


1 开始一个新项目

django的安装比较简单,在命令行里执行下面的命令。

pip install django

为了能使用django已有的模板代码,需要使用django-admin命令来执行诸如创建项目,创建项目下的子模块(在django中称为app)的工作。django-admin会帮我们准备好一系列目录结构和文件,在保持文件和目录规范同时减少我们的工作量。

下面以创建项目mysite为例说明创建过程,执行

$ django-admin startproject mysite

''' 项目目录结构
mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        wsgi.py
'''

进入mysite目录,执行

$ python manage.py startapp app1
''' app1结构
app1/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py
'''

为了激活新增加的app1模块,需要修改mysite.settings.py,在INSTALLED_APPS的列表项中增加一项’app1’。

此外django自带一套管理后台系统,支持简单的用户和组管理功能以及对应的权限管理,为了启用此功能,可以执行下面初始化工作。

python manage.py migrate
python manage.py createsuperuser
python manage.py runserver 0.0.0.0:8000

这样就可以通过本地localhost:8000/admin便可见到admin后台的登录页面了。

2 MVT简介

django使用了MVT的模式,数据模型使用Model来建模,View用来接收/处理/返回数据,而Template用来渲染展现内容。通过MVT模式将数据/处理/表现三层进行了分离。

Model支持ORM,根据需要,可以创建普通的只有数据项模型,也可以创建带有业务逻辑的模型。

对于简单的应用,业务逻辑可以放在View里处理,如果是复杂系统,那就需要创建单独的业务层,在view里借助业务层来完成相应的功能。

Template使用了自定义的模板语法,可以根据情况使用。如果有独立的前端支持,完全可以不借用模板。前后端只通过数据api接口交互,前端可以使用各种流行框架来解决展现逻辑。如果人员或模块划分没那么细分,使用模板在后端进行全部页面渲染或者部分渲染都是可行的。

3 View

如上节所述,View层用于接收请求,处理请求,并返回数据。模块的view处理逻辑都位于的各模块的views.py文件中,下面的代码示例了一个没有什么作用的处理器,它返回一个显示一行"hello world"的页面。更复杂的功能包括数据库访问,业务规则应用,远程过程调用等,都可以在这样一个函数中进行流程的组织。

# app1/views.py

from django.http import HttpResponse


def test(request):
    return HttpResponse('Hello world')

目前客户是访问不到这个页面的,因为还没有为这个页面设置uri,或者说没有在django中为其设置路由。

4 路由

django的路由在文件urls.py中进行配置。在以项目名命名目录下的urls.py中进行全局路由分派,其会将子模块的请求派发到相应的app.urls中进行二级路由,下面展示示例中的mysite的urls文件内容:

from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^app1/', include('app1.urls'))
]

简单的说,所有路由规则都定义在urlpatterns的列表内,每一项都是一条规则。定义了一个路径对应的处理函数或要派发模块的urls配置。
下面示例了将上节views.test返回的页面在app1.urls.py中添加路由规则的代码:

# app1/urls.py

from django.conf.urls import url
from app1 import views

urlpatterns = [
    url(r'^test/$', views.test),
]

这样就可以访问http://localhost:8000/app1/test页面,可看到其中展示的"hello world"。

5 Model

5.1 数据模型定义与数据表

在django中定义数据模型十分便捷,其ORM框架可以十分方便的生成对应的DDL语句,并通过表管理器生成DQL/DML,向开发人员屏蔽了底层的数据库及SQL的知识。
下面以演员,电影和签约为例说明django中model的使用。假设影视公司需要跟踪演员和电影的签约和支付情况,建立下面的简化模型。Actor和Movie对应现实中的演员和电影,使用Contact来记录二者之间的合同关系,以及演员出演电影的角色信息,薪资情况等。

# app1/models.py

from django.db import models

class Actor(models.Model):
    name = models.CharField(max_length=128, db_index=True)
    birth = models.DateField()
    
    def __unicode__(self):
        return self.name


class Movie(models.Model):
    name = models.CharField(max_length=128, db_index=True)
   
    actors = models.ManyToManyField(Actor, through='Contact')

    def __unicode__(self):
        return self.name


class Contact(models.Model):
    actor = models.ForeignKey(Actor)
    movie = models.ForeignKey(Movie)
    role  = models.CharField(max_length=64)
    payment = models.IntegerField()
    sign_date = models.DateField()
   
    def __unicode__(self):
        return self.role + self.sign_date.strftime('%Y-%m-%d')



在django中,models下定义了各种类型的字段,如DateField, IntegerField等,对应了SQL创建的各种column类型。此外还定义了PramaryKey, ForeignKey字段来声明主外键。这些字段都会对应到具体数据库表中的字段。

为了声明演员和电影之间的这种关系,需要使用 ManyToManyField,其声明的字段并不会在表中存在,但它告诉django框架,二者之间存在多对多的关系,并指明关系模型的名称。在一对多对多关系中,只需要在其中任意一个模型中声明即可,不需要在声明两次。

在定义了模型之后,就可以让框架帮我们创建对应的数据表了。在项目目录下执行命令:

python manage.py makemigrations app1
python manage.py migrate

其中第一行用来为app1生成一个迁移文件,存储在对应模块的migration目录下。
第二行是执行具体的数据库创建/修改工作。
在执行migrate之前,可以执行sqlmigrate app1 0001来查看自动生成的SQL语句。如下所示。


BEGIN;

CREATE TABLE "app1_actor" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "name" varchar(128) NOT NULL, "birth" date NOT NULL);

CREATE TABLE "app1_contact" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "role" varchar(64) NOT NULL, "payment" integer NOT NULL, "sign_date" date NOT NULL, "actor_id" integer NOT NULL REFERENCES "app1_actor" ("id"));

CREATE TABLE "app1_movie" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "name" varchar(128) NOT NULL);

ALTER TABLE "app1_contact" RENAME TO "app1_contact__old";

CREATE TABLE "app1_contact" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "role" varchar(64) NOT NULL, "payment" integer NOT NULL, "sign_date" date NOT NULL, "actor_id" integer NOT NULL REFERENCES "app1_actor" ("id"), "movie_id" integer NOT NULL REFERENCES "app1_movie" ("id"));

INSERT INTO "app1_contact" ("sign_date", "movie_id", "payment", "role", "actor_id", "id") SELECT "sign_date", NULL, "payment", "role", "actor_id", "id" FROM "app1_contact__old";
DROP TABLE "app1_contact__old";

CREATE INDEX "app1_actor_name_b00a760a" ON "app1_actor" ("name");
CREATE INDEX "app1_movie_name_2c168972" ON "app1_movie" ("name");
CREATE INDEX "app1_contact_actor_id_64e85f27" ON "app1_contact" ("actor_id");
CREATE INDEX "app1_contact_movie_id_2ae6d051" ON "app1_contact" ("movie_id");

COMMIT;

从SQL中我们可以知道,创建的表名为{子模块名_模型名},表中自动创建了自增类型的主键id。

5.2 使用模型进行增/删/改/查

下面以电影碟中谍为例来说明新增模型到数据表的方式

from models import Actor, Movie, Contact

# 使用表管理器objects来新增记录
movie = Movie.objects.create(name='碟中谍6:全面瓦解')

# 使用模型对象新增记录
actor = Actor()
actor.name = '汤姆·克鲁斯'
actor.birth = '1962-07-03'
actor.save()

# 添加签约关系
Contact.objects.create(movie=movie, actor=actor,role='伊森·亨特', payment=800, sign_date='2018-01-10')

# 添加另一个演员及签约
actor = Actor.objects.create(name='丽贝卡·弗格森', birth='1983-10-19')
actor.save()

Contact.objects.create(movie=movie, actor=actor,role='伊尔莎·浮士德', payment=400, sign_date='2018-01-20')

下面列出一些常用的查询方式:

# 单表查询
actors = Actor.objects.filter(name__contains='汤姆·克鲁斯')
actor = actors[0]
print actor.name, actor.birth # 汤姆·克鲁斯 1962-07-03

# 由对象进行关联查询
tom_movies = actor.movie_set.all()
print tom_movies # <QuerySet [<Movie: 碟中谍6:全面瓦解>]>


tom_contacts = actor.contact_set.all()
print tom_contacts  # <QuerySet [<Contact: 伊森·亨特2018-01-10>]>


# 表关联查询
contacts = Contact.object.filter(actor__name__contains='汤姆·克鲁斯', movie__name__contains='6')
contact = contacts[0]
print contact.actor.name, contact.movie.name, contact.role
# 汤姆·克鲁斯 碟中谍6:全面瓦解 伊森·亨特


# 反向关联查询
actors = Actor.objects.filter(contact__sign_date__gt='2018-01-01')
print actors # <QuerySet [<Actor: 丽贝卡·弗格森>, <Actor: 汤姆·克鲁斯>]>

actors = Actor.objects.filter(contact__movie__name__contains='6')
print actors
# <QuerySet [<Actor: 丽贝卡·弗格森>, <Actor: 汤姆·克鲁斯>]>

模型的修改与删除更加简单,调用对象上的delete即可删除对象,将对象修改后进行save即可实现数据的更新。

5.3 order_by与limit

上节所有查询结果返回的是一个支持迭代的QuerySet,如果需要排序,在结果集上调用order_by(‘field’)即可。

如果需要限制返回的结果数量,像数据一样进行切片即可,如Actor.objects.all()[0:10]

django的查询集是lazyload的,只有真的需要数据的时候才会执行数据库查询。

5.4 聚合查询

from django.db.models import Sum, Avg

# 计算碟6所有演员的费用
Contact.objects.filter(movie__name__contains='碟中谍6').aggregate(total=Sum('payment'))
# Out[17]: {'total': 1200}

# 计算每部电影演员费用的汇总
qs = Contact.objects.values('movie__name').annotate(cost=Sum('payment'))

# <QuerySet [{'movie__name': u'\u789f\u4e2d\u8c0d6\uff1a\u5168\u9762\u74e6\u89e3', 'cost': 1200}]>

print qs.query
# SELECT "app1_movie"."name", SUM("app1_contact"."payment") AS "cost" FROM "app1_contact" INNER JOIN "app1_movie" ON ("app1_contact"."movie_id" = "app1_movie"."id") GROUP BY "app1_movie"."name"

6 Template

Template可以是纯html文档,在view中通过将html文档作为字符串返回即可。

如果需要django在后端动态渲染数据,例如返回符合条件的结果列表,可以使用template。在template中可以对传入的对象进行求值,从而生成实例页面。

template的求值语法为{{value}},同时支持条件及循环等tag,tag语句需要使用{%tag sentence %}将sentence进行包裹,并需要以{%endtag%} 来声明tag结束。

下面是一个template页面。

# template/app1/test.html
<html>
<head>
    <title>{{title}}</title>
</head>

<body>
    <ul>
        {%for actor in actors%}
            <li>{{actor.name}} -- {{actor.birth}}</li>
        {%endfor%}
    </ul>
</body>

为了将数据传入这个模板页面,需要在views中函数中传递相应的参数给模板。

# app1/views.py
from app1.models import Actor
from django.shortcuts import render

def test(request):
    actors = Actor.objects.all()
    context = {
        'title': '所有演员',
        'actors': actors
    }
    html = render(request, 'app1/test.html', context)
    return html

7 Admin定制

django中的admin站点可以通过注册的机制,快速将模型转化为管理页面,在页面中可以实现列表查询,数据的增删改等各种操作。

下面列出了将Actor模型注册到admin站点的代码,其中声明的ContactsInline类是为了在演员的编辑页面中可以关联编辑签约模型数据。

from django.contrib import admin
from web.models import *


class ContactsInline(admin.TabularInline):
    model = Contact
    extra = 0

class ActorAdmin(admin.ModelAdmin):
    list_display = ['name', 'birth']
    inlines = [ContactsInline, ]

admin.site.register(Actor, ActorAdmin)

完成之后,打开admin站点,便可以看到新增的Actor管理页面入口。

8 项目Settings

在项目的根目录下存放着项目的Settings,如果要指定不同的设置,可以通过环境变量DJANGO_SETTINGS_MODEULE来设置。

export DJANGO_SETTINGS_MODULE=mysite.settings

另一种是在python代码中通过os模块来设置

import os

os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

在代码中可以动态的修改当前的配置

from django.conf import settings

settings.DEBUG = True

有时可能需要在非django项目中复用django的功能或代码,例如引用已经定义的django model,这也是可以的。参见下面的代码片段:

import sys
import os

setting_path = '/path/of/settings.py'
setting_dir = os.path.dirname(setting_path)

sys.path.append(setting_dir)
os.environ['DJANGO_SETTINGS_MODULE'] = 'setting_dir.settings'

import django
django.setup()

python之使用django框架开发web项目 该文章主要讲述了python项目中使用django框架进行web开发的流程,以及详细的开发示例 阅读详情

相关推荐

使用django框架搭建web应用

使用python进行web开发需要使用一些web框架,而这些web框架也可以帮助我们简单快速的搭建起一个web网站。常见的web框架有django,webpy等。这里我们使用django来开发一个简单的登录页面。 1)首先,下载python,django并安装。具体安装过程在此不再赘述,可以自行百度。注意要配置好环境变量。 2)然后使用django的命令行在想要创建项目的文件夹下创建一个web

qq_32216775的博客 1611

[Django]MVT模式的详解

关于 Django 数据驱动 Web 应用的总体设计 把数据存取逻辑、业务逻辑和表现逻辑组合在一起的概念有时被称为软件架构的 Model-View-Controller (MVC)模式。 在这个模式中, Model 代表数据存取层,View 代表的是系统中选择显示什么和怎么显示的部分,Controller 指的是系统中根据用户输入并视需要访问模型,以决定使用哪个视图的那部分。 为什么用缩写? 像 MVC 这样的明确定义模式的主要用于改善开发人员之间的沟通。 比起告诉同事,“让我们采用抽象的数据存取方式,然后

SORYUSHIKINAMI的博客 5900

构建在线电影数据库:Django实战教程

Django框架是一个开源的全栈Web开发框架,它提供了一整套工具,使得开发者可以快速开发安全、可维护的Web应用。Django遵循了DRY原则(Don’t Repeat Yourself),鼓励使用“约定优于配置”的模式来减少不必要的设定和重复劳动。MVT设计模式是将Web应用分为三个核心组件:模型(Model),视图(View)和模板(Template)。模型(Model):负责与数据库进行交互,定义了数据的结构以及与之相关的逻辑操作。

weixin_33072399的博客 809

Django基础入门操作 (Django-01)

Django是一个开源的,由Python写成。采用了的框架模式,它最初是被用来做CMS(内容管理系统)软件。内容管理系统(新闻、视频)

March_A的博客 815

(RegionProposal Network)RPN网络结构及详解

RPN(RegionProposal Network)区域生成网络 Faster-RCNN的核心。在这里整理。 1.anchors。 特征可以看做一个尺度51*39的256通道图像,对于该图像的每一个位置,考虑9个可能的候选窗口:三种面积{128,256,512}×{128,256,512}×三种比例{1:1,1:2,2:1}{1:1,1:2,2:1}。这些候选窗口称为anchors...

凹酱的DEEP LEARNING 19万+

提示deepseek生成完整的json用于对接外部API

通过精准的提示词设计(字段过滤、格式约束)、动态验证机制(自检与修正)和官方模板参考,可有效确保DeepSeek生成的JSON纯净无冗余。

神棍之路 2308

Django框架介绍及配置

Django框架介绍及配置 一, WEB框架介绍 1.1Web应用程序处理流程 1.2Web框架程序的意义 用于搭建Web应用程序 免去不同Web应用相同代码部分的重复 1.3 Web应用程序的本质 接收并解析HTTP请求,获取具体的请求信息 处理本次HTTP请求,即完成本次请求的业务逻辑处理 构造并返回处理结果——HTTP响应 1.4. Web框架学习方法 这三天我们的学习目标和最终任务: 如...

arvinyuan的博客 2万+

告别有线:用PVE直通无线网卡,打造一台真正的‘无线’Win10软路由/测试机

本文详细介绍了如何通过PVE直通无线网卡技术,构建全无线Win10软路由或测试机。从硬件选型、PVE环境配置到PCIe和USB双模直通技术,逐步指导实现Wi-Fi AP和蓝牙连接功能,为家庭实验室和小型办公环境提供灵活高效的网络解决方案。

weixin_28683689的博客 586

python——Django 框架

根据书籍表结构设计模型类:模型类:BookInfo书籍名称字段:name根据人物表结构设计模型类:模型类:PeopleInfo人物姓名字段:name人物性别字段:gender外键约束:book外键要指定所属的模型类说明 :书籍-人物的关系为一对多. 一本书中可以有多个英雄.不需要定义主键字段, 在生成表时会自动添加, 并且值为自增长.根据数据库表的设计在models.py中定义模型类,继承自'''1.定义模型类2.模型迁移。

weixin_64672480的博客 2万+

稳健自适应波束形成学习(2):自适应计算对角加载量方法——基于广义线性组合的鲁棒Capon波束形成

对于快拍数相对阵元数较小时,样本协方差矩阵不能很好对协方差矩阵进行估计。常规的对角加载量需要根据经验值或不断手动调整进行测试,没有一个明确的准则和推导。该篇介绍一种自适应计算对角加载量的方法,且能适应快拍数相对阵元数较小时的情况。均匀线阵阵元数:18;载波频率30MHz;通信信号来波方向0°、来波估计偏差0.5°;干扰来波方向30°;通信信号信噪比10dB;干扰信号信噪比60dB。也即在干扰角度生成66dB的零陷,通信信号受到16dB的衰减。

a1uajug的博客 825

RC4加密算法详解

RC4(也称为 Rivest Cipher 4)是流密码的一种形式,流密码逐字节操作数据流。RC4 流密码是使用最广泛的流密码之一,它通过算法一次一个字节地加密消息,简单并且操作速度快。RC4是一种在电子信息领域加密的技术手段,用于无线通信网络,是一种电子密码,只有经过授权的用户才能享受该服务,使用 64 位或 128 位密钥大小。它通常用于安全套接层 (SSL)、传输层安全 (TLS) 等应用,也用于 IEEE 802.11 无线 LAN 标准。在存储大量的信息时,RC4展现出它的实用性,面对大量的数据,

weixin_43211186的博客 1万+

Python框架篇之Django(Django项目搭建全过程、Web框架与Django)

文章目录一、Web框架与Django本质二、从安装到实现一个完整的Django项目 一、Web框架与Django本质 1、Web框架的理解 框架,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统。对于所有的Web应用,实际上就是一个socket服务端,用户的浏览器其实就是一个socket客户端。 2、Django的本质 Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。简单来说,就是Django给我

Viewinfinitely的博客 1万+

DCMM评估报告模板样例

这篇DCMM评估报告对某数据管理公司2020年的数据管理能力进行了全面分析。报告显示,该公司在数据战略方面取得初步进展,但在数据治理和数据架构方面仍存在明显不足,包括缺乏有效治理流程、数据质量监控不足,以及数据标准化和转换灵活性不足等问题。评估报告提出了针对性改进建议,包括完善数据战略、建立治理流程、加强质量监控和提升数据转换灵活性等,为提升数据管理成熟度提供了重要指导。

cdfunlove的博客 166

Django Web 框架的使用 - 安装 Django Web 框架

大家好我是ζ小菜鸡,让我们一起来学习Django Web 框架的使用 - 安装 Django Web 框架)。(一起努力,咱们顶峰相见!!!)

精益求精,永无止境,永远在路上! 1251

GB28181 —— 3、C++编写GB28181设备端,完成注册、注销、保活心跳、响应查询目录等功能(附源码)

GB28181 —— Win10下编写GB28181设备端,完成注册、注销、保活心跳、响应查询目录等功能(附源码)

1308

飞牛NAS系统盘占用过高排查与解决全记录(已有效解决)

📢NAS弹出系统盘占用过高预警?别慌!亲测解决全流程来啦~ 精准定位根源+安全迁移数据,附详细实操步骤,帮同款困扰的你高效释空间、少走弯路!

XiaoqiangClub的博客 3122

Web框架与Django路由层

对于一些复杂或者复用的需要,可以定义自己的转化器。regex类属性,字符串类型方法,value是由类属性regex所匹配到的字符串,返回具体的Python变量值,以供Django传递到对应的视图函数中。方法,和to_python相反,value是一个具体的Python变量值,返回其字符串,通常用于url反向引用。使用...

m0_71115526的博客 1906

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

基于Django框架的python web

项目名称:基于Django的python web 摘要 Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。2019年12月2日,Django 3. 0发布。 1. 引言 本篇介绍了Django框架编写的python web

qq_41194667的博客 1480

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Python web框架要点、django概述及django项目创建

Django,发音为[`dʒæŋɡəʊ],是用python语言写的开源web开发框架,并遵循MVC设计。劳伦斯出版集团为了开发以新闻内容为主的网站,而开发出来了这个框架,于2005年7月在BSD许可证下发布。这个名称来源于比利时的爵士音乐家DjangoReinhardt,他是一个吉普赛人,主要以演奏吉它为主,还演奏过小提琴等。由于Django在近年来的迅速发展,应用越来越广泛,被著名IT开发杂志SDTimes评选为2013SDTimes100,位列"API、库和框架"分类第6位,被认为是该领域的佼佼者。

我的个人博客 1603

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Django Web框架的使用

Django是基于Python的重量级开源Web框架。Django拥有高度定制的ORM和大量的API,简单灵活的视图编写、优雅的url、适用于快速开发的模板以及强大的管理后台。Django简介可以查看菜鸟教程Django 简介 | 菜鸟教程通过这篇博客的学习,不难发现,Django视图编写灵活、URL优雅,有适用于快速开发的模板以及强大的管理后台,这些使得它在python web开发领域占据了不可动摇的地位。

qq_33163046的博客 5845

python之web框架django

Web应用框架(Web application framework)是一种开发框架,用来支持动态网站、网络应用程序及网络服务的开发。其类型有基于请求的和基于组件的两种框架,前者的代表有Struts和Spring MVC等,后者的成员则有JSF、Tapestry等等,常见的架构有MVC和CMS两种。Web应用框架有助于减轻网页开发时共通性活动的工作负荷,例如许多框架提供数据库访问接口、标准样板以及会话管理等,可提升代码的可再用性。常用的web开发框架根据不同语言罗列如下: PHP ...

xiaomu_347的博客 1963

使用python框架Django搭建web应用

一、Django简介 1. web框架介绍 具体介绍Django之前,必须先介绍Web框架的概念。 Web框架: 别人已经设定好的一个Web网站模板,你学习它的规则,然后“填空”或“修改”成你自己需要的样子。 一般Web框架的架构是这样的: 其它基于Python的Web框架,如Tornado、Flask、Webpy都是在这个范围内进行增删裁剪的。例如Tornado用的是自己的异步非阻...

小猪快跑的博客 3141

[Python] 使用Django开发Web框架

Django Web框架简介 Django 项目是一个 python[1]定制框架,它源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来。Django 框架的核心组件有: 用于创建模型的对象关系映射为最终用户设计的完美管理界面一流的 URL 设计设计者友好的模板语言缓存系统。 Django符合MTV架构 Django的安装 Django的安装有两种方法

Zhu_Julian's Notes (朱显杰的技术博客) 5485

Python Web框架:Django

Python Web框架:Django简介,Django的安装使用,Django项目目录结构介绍,Django管理工具等

偶是不器的博客 4718

Django Web框架

模型层位于Django视图层和数据库之间,进行Python对象和数据库表之间的转换。模型层可以屏蔽不同数据库之间的差异,可以提供很多便捷工具有助于开发。临时性操作使用Django Shell更加方便,小范围Debug更简单,不需要运行整个项目来测试。

2301_80802299的博客 1887

Web框架,Django框架基本使用

快来学习

lzq78998的博客 622
上一篇: 流畅的Python学习
下一篇: sklearn cookbook 总结
zzulp
博客等级 码龄19年 464粉丝 176原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值