当前位置: 首页 > 网络应用技术

如何将Django网页分为四个(Django以实现分页)

时间:2023-03-07 18:07:52 网络应用技术

  简介:许多朋友问如何将Django网页分为四个部分。本文的首席CTO笔记开始为您的参考做出详细的答案。我希望这对每个人都会有所帮助!让我们一起看看!

  最后一个问题(Web网页个人开发的软件和配置基础)已详细介绍了基于Django+MySQL+Pycharm的Web开发的基础架构开发。本期将遵循作者编写第一个网页。他本人以及与作者同一局域网的其他用户也可以访问。

  首先输入python manage.py startapp myfamilyweb(指示创建自己的网页项),如图1所示。

  生成的myFamilyWeb中目录结构中的含义如下:

  外层的_init_.py文件标识MyFamilyWeb是一个Python软件包。

  Admin.py用于将模型定义注册到管理背景,这是Django Admin应用程序的配置文件。

  apps.py用于应用程序本身的配置。

  迁移目录用于将模型的定义和修改存储在模型文件中。

  迁移/_init_.py文件标识迁移是一个Python软件包。

  Model.py用于定义应用程序中所需的数据表。

  tests.py文件用于编写当前应用程序的单元测试。

  views.py文件用于编写应用程序视图。

  上述介绍是MyFamilyWeb应用程序的所有内容。将来需要做的是填充相应的服务逻辑以提供服务。如果这是开始,您将发现无法如图2所示访问它。

  如果要访问第一个网页(MyFamilyWeb),第一步是设置路由并添加一个函数以访问views.py(图3-图6)。

  配置模板和HTML(图7位数13)

  该配置已编写了第一个和最简单的网页来启动服务器。记录(图14)

  在开发人员的计算机上访问浏览器(图15)

  (配置防火墙端口)(图16)

  设置以允许多个主机访问(图17)

  输入ipconfig到终端

  输入IPv4地址:192.168.0.102(图18)

  python manage.py runserver 0.0.0.0:8000(启动时添加了0.0.0.0.0:8000)。

  然后,本地网络中的其他计算机可以在浏览器中访问您的IP地址(此URL只能由同一局部网络的主机访问)

  之后,我去学习如何编写HTML文件。

  本文演示了如何使用1.7的Django版本创建一个简单的Django网站。

  1.创建项目

  运行以下命令来创建Django项目。项目名称是MySite:

  $ django- addmin.py startproject mysite

  创建的项目目录如下:

  我的网站

  e- manage.py

  t - 锰矿

  t- __init__.py

  在──设置.py

  s-或urls.py

  。─— wsgi.py

  1个目录,5个文件

  阐明:

  __init__.py:让Python将目录作为开发包所需的文件(即一组模块)。这是一个空文件,通常您不需要修改它。

  Manage.py:命令行工具允许您通过多种方式与Django项目进行交互。类型python manage.py帮助查看它可以做什么。您不需要编辑此文件;在此目录中为方便起见是纯粹的。

  settings.py:Django项目的设置或配置。

  urls.py:项目的URL路由设置。目前,它是空的。

  wsgi.py:wsgi Web应用程序服务器配置文件。有关更多详细信息,请检查如何使用WSGI部署

  接下来,您可以修改settings.py文件,例如:修改Lagansy_code,设置时区time_zone

  SIT_ID = 1

  lanking_code ='zh_cn'

  time_zone ='亚洲/上海'

  use_tz = true

  [时区]()功能在上方打开。您需要安装pytz:

  $ sudo pip安装pytz

  2.操作项目

  在运行项目之前,我们需要创建一个数据库和表结构。我在这里使用的默认数据库:

  $ python manage.py迁移

  执行操作:

  应用所有迁移:管理员,contenttypes,auth,sessions

  运行迁移:

  应用ContentTypes.0001_Initial ...确定

  应用auth.0001_initial ...确定

  应用管理员0001_Initial ...确定

  应用sessions.0001_initial ...好的

  然后开始服务:

  $ python manage.py runserver

  您将看到以下输出:

  执行系统检查...

  系统检查没有问题(0沉默)。

  2015-02 1月28日:08:33

  Django版本1.7.1,用户设置“ mysite.settings”

  启动开发服务器

  使用Control-C退出服务器。

  这将在端口8000启动本地服务器,只能从您的计算机连接和访问。现在服务器正在运行,现在可以访问Web浏览器。它开始工作。

  您还可以指定启动端口:

  $ python manage.py runserver 8080

  并指定的IP:

  $ python manage.py runserver 0.0.0.0:8000

  3.创建一个应用程序

  一个项目是更早创建并成功运营的。现在,要创建一个应用程序,应用程序等同于项目的子模块。

  在项目目录中创建一个应用程序:

  $ python manage.py startapp民意调查

  如果操作成功,您将在MySite文件夹下看到一个称为民意调查的文件夹。目录结构如下:

  民意调查

  t- __init__.py

  .- admin.py

  在移民

  │_ _- __init__.py

  s- models.py

  。—— tests.py

  s - 视图。

  1个目录,6个文件

  4.创建模型

  每个Django模型都从django.db.models.model继承

  模型中每个属性的每个属性代表数据库字段

  通过Django模型API

  在民意调查文件夹下打开Models.py文件。创建两个模型:

  导入日期

  来自django.db导入模型

  来自django.utils重要时区

  班级问题(Models.Model):

  Question_Text = model.Charfield(max_length = 200)

  pub_date = model.dateTimeField('Date已发布')

  def was_publish_recression(seld):

  返回self.pub_date = timezone.now()-dateTime.timedelta(天= 1)

  班级选择(Models.Model):

  问题=模型。Foreignkey(问题)

  choce_text = models.charfield(max_length = 200)

  投票= model.integerfield(默认= 0)

  然后修改inporthed_apps以在mySite/settings.py中添加民意调查:

  instasted_apps =((

  'django.contrib.admin',

  'django.contrib.auth',

  'django.contrib.contenttypes',

  'django.contrib.sessions',

  'django.contrib.messages',

  'django.contrib.staticfiles',

  “民意调查”,

  治愈

  添加新应用程序后,我们需要运行以下命令来告诉Django您的模型以进行更改。迁移数据库需要迁移:

  $ python manage.py makemigrations民意调查

  您将看到以下输出日志:

  “民意调查”的迁移:

  0001_Initial.py:

  - 创建模型选择

  - 创建模型问题

  -DD现场问题选择

  您可以从民意调查/迁移/0001_Initial.py查看迁移语句。

  运行以下语句,您可以查看迁移SQL语句:

  $ python manage.py sqlmigrate民意调查0001

  输出结果:

  开始;

  创建表“ polls_choice”(“ id”整数而不是null主键自动启动,“ choice_text” varchar(200)而不是null,“投票” integer而不是null);

  创建表“ polls_question”(“ id”整数而不是null主键自动启动,“ Question_Text” Varchar(200)不是null,“ pub_date” dateTime null)

  

  插入“ polls_choice__new”(“ phoce_text”,“票”,“ id”)选择“ polls_choice”中的“ choice_text”,“票数”,“投票”,“ id”

  丢弃表“ polls_choice”;

  Alter Table“ Polls_Choice__new”重命名为“ Polls_Choice”;

  在“ Polls_Choice”(“ Question_ID”)上创建索引Polls_choice_7aa0f6ee;

  犯罪;

  您可以运行以下命令以检查数据库是否存在问题:

  $ python manage.py检查

  再次运行以下命令以创建新添加的模型:

  $ python manage.py迁移

  执行操作:

  应用所有迁移:管理员,内容类型,民意调查,auth,会议

  运行迁移:

  应用民意调查。0001_Initial...好的

  总而言之,在修改模型时,您需要执行以下步骤:

  修改型号.py文件

  运行python manage.py makemigrations创建迁移语句

  运行python manage.py迁移并迁移模型更改为数据库

  您可以阅读django-admin.py文档以查看更多管理。

  创建模型后,我们可以通过Django提供的API进行测试。run以下命令输入Python Shell的交互模式:

  $ python manage.py shell

  这是一些测试:

  从polls.models导入问题,选择#导入我们刚刚编写的模型类。

  #系统中还没有问题。

  Question.Objects.all()

  []

  #创建一个新问题。

  #在默认设置文件中启用了对时区的支持,因此

  #Django用tzinfo for pub_date来实现DateTime。使用timezone.now()

  #而不是面团。dateTime.now(),它将做正确的事情。

  来自django.utils重要时区

  Q = Question(Question_text =“什么新功能?”,pub_date = timezone.now())

  #将对象保存到数据库中。您必须明确调用Save()。

  问:Save

  #现在它有一个ID。请注意,这可能会说“ 1”的“ 1”,具体取决于

  #您使用哪个数据库。那不是大事;这只是意味着你

  #数据库后端喜欢返回整数作为Python长整数

  #对象。

  Q.ID

  1

  #通过Python属性访问模型字段值。

  Q.question_text

  “什么是新的?”

  q.pub_date

  dateTime.dateTime(2012,2,26,13,0,0,0,775217,tzinfo = utc)

  #Change值通过更改属性,然后调用Save()。

  q.question_text =“怎么了?”

  问:Save

  #Objects.all()显示数据库中的所有问题。

  Question.Objects.all()

  [问题:问题对象]

  打印所有问题时,输出的结果是[问题:问题对象]。我们可以修改模型类以使其更容易理解。修改模型类:

  来自django.db导入模型

  班级问题(Models.Model):

  #...

  def __str __(self):#__unicode__ python 2

  返回self.question_text

  班级选择(Models.Model):

  #...

  def __str __(self):#__unicode__ python 2

  返回self.choice_text

  继续测试:

  从民意调查。模型导入问题,选择

  #确保我们的__str __()加法工作。

  Question.Objects.all()

  [问题:怎么了?]

  #Django提供了一个富含数据库的查找API,该API完全由

  #关键字参数。

  Question.Objects.Filter(ID = 1)

  [问题:怎么了?]

  Question.Objects.Filter(Question_text_Startswith ='What')

  [问题:怎么了?]

  #获取今年提出的问题。

  来自django.utils重要时区

  curren_year = timezone.now()。年

  Question.Objects.get(pub_date__year = current_year)

  问题:怎么了?

  #请求ID,这将引起例外。

  Question.Objects.get(ID = 2)

  Trackback(最近的最新电话):

  Em

  dotNotexist:不存在问题匹配查询。

  #主键查找是最合并的情况,因此Django提供了一个

  #主要钥匙精确查找的快捷方式。

  #跟随者与Question.objects.get(ID = 1)相同。

  Question.Objects.get(PK = 1)

  问题:怎么了?

  #确保我们的自定义方法有效。

  Q = Question.Objects.get(PK = 1)

  #给出一些选择。创建呼叫构造一个新的

  #选择对象,执行插入语句,将选择添加到集合

  可用选择的#并返回新选择对象。Django创建

  #一套持有外国关系的“另一面”

  #(例如,一个问题的选择)可以通过API访问。

  Q = Question.Objects.get(PK = 1)

  #从相关对象集中显示任何选择 - 到目前为止无。

  q.choice_set.all()

  []

  #创建三个选择。

  Q.CHOICE_SET.CREATE(choce_text ='不多',票数= 0)

  选择:不多

  Q.CHOICE_SET.CREATE(choce_text ='the Sky',投票= 0)

  选择:天空

  c = q.choice_set.create(choce_text ='再次黑客入侵',票数= 0)

  #选择对象可以访问其相关问题对象。

  C.问题

  问题:怎么了?

  #和VICE,反之亦然:问题对象可以访问选择对象。

  q.choice_set.all()

  [选择:不是泥土,选择:天空,选择:再次入侵]

  q.choice_set.count()

  3

  #API自动食品遵循您需要的相关船。

  #使用面团下划线选择相关职位。

  #这是您想要的深层层次的工作。没有限制。

  #找到今年Pub_date的任何问题的所有选择

  #(重用我们上面创建的“ Current_Year”变量)。

  choce.objects.filter(问题__pub_date__year = current_year)

  [选择:不是泥土,选择:天空,选择:再次入侵]

  #让我们删除其中一个选择。为此使用delete()。

  c = q.choice_set.filter(choce_text__startswith ='Just Hacking')

  c.delete()

  以上测试涉及与Django Orm相关的知识。有关详细信息,请参阅Django中的ORM。

  5.管理管理员

  Django具有构建-Django管理员背景管理界面的出色特征,对于管理人员而言,它很方便地添加和删除网站的内容。

  新项目系统已为我们设置了背景管理功能。请参阅mySite/settings.py:

  instasted_apps =((

  'django.contrib.admin',#

  'django.contrib.auth',

  'django.contrib.contenttypes',

  'django.contrib.sessions',

  'django.contrib.messages',

  'django.contrib.staticfiles',

  '我的网站',

  治愈

  同时,添加了进入背景管理的URL。您可以在MySite/urls.py中查看它:

  url(r'^admin/',infulude(admin.site.urls)),#可以使用SET URL进入网站的背景

  接下来,我们需要创建管理用户来登录到管理背景管理接口:

  $ python manage.py createSuperuse

  用户名(留空白以使用“六月”):管理员

  电子邮件地址:

  密码:

  密码(再次):

  超级用户成功创建了。

  总结

  最后,查看项目目录结构:

  我的网站

  Q - db.sqlite3

  e- manage.py

  t - 锰矿

  │_ _- __init__.py

  │e ─—设置.py

  │u - urURLS.PY

  │s-wsgi.py

  S - 民意调查

  │_ _- __init__.py

  │d - 管理

  │i - 移民

  ││├├─-0001_Initial.py

  ││├─..__Init__.py

  │o - models.py

  │e - ─-模板

  民意调查

  ││├├─detail.html

  ││├ - index.html

  thml

  │e - tests.py

  │u - urURLS.PY

  │i - ─视图。

  L ─—模板

  在─管理员

  _ - base_site.htm

  通过上面的介绍,我对Django的安装,操作以及如何创建视图以及如何创建视图和模型有了清晰的了解。接下来,您可以彻底了解Django的自动化测试,持久性,中间件和国际化的知识。

  介绍Nginx和Python如何使用它

  Python易于使用且有趣。它使软件开发变得简单。据说操作性能也比其他脚本语言高(最新版本的PHP 7的性能似乎高于Python)

  每个人都希望他们的网站或应用程序更快地运行。但是,当大量流量和流量增加时,每个网站都很容易遇到性能问题。即使业务繁忙,这种情况也会更糟。实际上,无论交通是稳定还是陡峭的增长,所有网站都面临性能和机械问题。

  NGINX和NGINX插件的出现是解决此问题。它们以三种不同的方式提高了网站性能:

  1. Web Service-开发的NGINX来解决C10K问题 - 可以轻松支持10,000或更多并发连接。使用NGINX为您的Python应用程序提供Web服务,即使在小流量中,也可以使您的网站运行更快。当您的用户是数万个时,可以肯定的是,它可以提供更高的性能,更少的崩溃和更少的时间。您还可以使用nginx提供静态文件缓存或micro -campaign。独立的NGINX反向代理也是一个不错的选择(请参阅下一段)。

  2.反向代理 - 您可以在应用程序服务的正面使用Nginx作为反向代理。Nginx接收Web请求并将其分发到您的应用程序服务。这“奇怪的技巧”允许您的网站运行速度更快,减少服务资源,以较少的方式减少服务资源消耗并提高安全性。您还可以在反向代理服务器上缓存静态资源(非常有效),添加静态内容的微词,以减少自己的负载的应用,等等。

  3.提供多种应用程序服务的动态均衡 - 通过部署反向代理服务。Multi -Application Services和NGINX或NGINX插件用于使流量负载平衡。根据交通需求,增长稳定性和运行时间,通过这种部署需要,您可以轻松地在线扩展网站的性能。如果您需要在同一服务上给定的用户会话,则只需要配置负载平衡即可支持会话的持久性。

  无论是为您的Python应用程序提供网站服务,还是提供反向代理服务,还是使负载平衡,或者同时又有NGINX和NGINX插件,都会带来优势。

  这是本系列中的第一篇文章(由两个部分组成)。它将引入五种技术来改善Python的应用程序性能,包括如何使用Nginx或Nginx插件提供Web Servicesthe内容是MicroLysy。在第二部分中,如果您使用nginx或nginx插件,我们将介绍逆向代理服务,以及如何提供如何提供。负载平衡用于多个应用程序服务。

  提示1-定位Python性能瓶颈

  有两种截然不同的情况使您的Python应用程序遇到性能问题 - 首先,每天都有大量用户。其次,高负载。大多数网站不必担心性能问题,因为它们的负载很小。根据我们笨拙的意见,他们应该努力减少响应时间。控制毫秒的响应时间非常困难,但并不关心工作,但是我们可以使我们的用户体验更好,更好地表现。

  但是,这篇博客文章和其余第二部分将遵循每个人确实要注意的场景:何时可能发生网站时发生该网站时,例如性能的性能会大大降低和机器。在由黑客引起的流量中,模拟了大量的用户攻击。同时,改善网站性能也是处理攻击的重要一步。

  诸如Apache HTTP服务器之类的系统将为每个用户分配一定数量的内存。随着用户的继续增加,物理内存将压倒性。服务器开始使用磁盘切换分区,性能直接降低,并且遵循的性能问题和机器。将本博客文章中描述的nginx介绍将有助于解决此问题。

  Python特别容易与内存相关的性能问题,因为Python通常使用更多的内存来执行任务(如此快速执行速度)。因此,在相同的条件下,与其他语言的应用相比,您的Python应用程序更容易在少数用户中“跳闸”。

  优化您的应用程序将有助于解决问题,但要解决与流量相关的性能的性能,这通常不是最好,最快的方法。本博客文章和其余的第二部分将引入最佳和最快的方法。实施这些措施后,采用所有方法来优化您的应用程序,或使用微服务体系结构重写。

  提示2-选择单个服务或微服务部署

  小型网站可以在单个服务器上运行良好。LARGE网站需要多个服务器。但是,如果您在中间 - 或您的网站从一个小网站更改为大型网站 - 您可以做出一些有趣的选择。

  如果您使用一台机器部署,那么大流量和浏览的潮流将带来很大的风险。您的扩展方法非常有限,无非是优化应用程序,将Web服务切换到NGINX,使用较大,更快的服务器或使用内容分配网络(CDN)。所有这些选项的实现都是时间 - 耗费,以及在实施过程中引入错误的风险。

  另一个明显的风险是,单个机器部署 - 许多问题可能会导致您的网站挂断电话,并且没有快速和简单的解决方案。

  将NGINX用作申请的代理服务

  如果将服务切换到nginx并使用单个计算机部署,则可以自由选择使用开源nginx或nginx插件-in.nginx包括企业 - 级别的支持和某些扩展。在站立 - 空置部署的支持下。如果您将分布式部署用作反向代理,则可以使用其他NGINX插件,例如负载平衡和耐用的会话。

  有很多事情要考虑。除非您确定您的网站将来会在很长一段时间内成为一个小型网站,否则您无需关心成为机器的问题。否则,您必须了解,在单位部署中存在许多风险。分布式部署更容易扩展,可以通过工程来解决 - 点故障,可以按需调整性能,并且可以快速扩展服务器容量。

  提示3-使用nginx替换您的Web服务

  在网络时代的早期,Apache是Web服务的代名词。但是,自2000年Nginx出现以来,它很快就变得流行了。现在,这是第一个Web服务,已使用1,000,超过10,000个网站和世界上超过100,000个网站使用。

  NGINX最初是为了解决C10K问题-Support 10,000以上的同时支持内存预算而开发的。其他Web服务需要为每个连接分配内存块,因此它们会耗尽物理内存。当Qianji用户同时访问网站时,它将放慢甚至崩溃。Nginx处理器可以单独处理请求,或者可以在处理多个用户时优雅地扩展请求。(这可以很好地解决其他问题,并且可以很好地解决其他问题,并且稍后将详细说明。)

  高层nginx体系结构图如下所示。

  NGINX架构,从开源应用程序架构的第二卷

  在上图中,Python应用程序服务部署在后端的应用程序服务块中,如图所示,它可以通过fastcgi.nginx不“知道”如何运行python,因此需要一个需要的环境Gateway Connection.fastcgi是PHP,Pyhton和其他语言广泛使用的接口。

  但是,连接Python和Nginx的流行解决方案是网络服务网关接口(WSGI).WSGI在多线程和多过程环境下工作,因此他与本文中提到的所有部署选项兼容。

  如果将Web服务迁移到NGINX,这里有一些有用的软件:

  配置Gunicorn-“ Green Unicorn”是Nginx的流行WSGI服务。

  配置UWSGI-另一个流行的WSGI服务,并使用NGINX使用。UWSGI包含NGINX指令支持。

  使用UWSGI,NGINX和DJANGO-流行的Python Web框架。

  以下代码将向您展示如何配置nginx和uwsgi-在这种情况下,该项目使用Python Framework Django。

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17

  18

  19

  20

  21

  22

  23

  24

  25

  26

  27

  28

  29

  30

  31

  http

  {{{

  Em

  上游

  django {

  服务器

  127.0.0.1:29000;

  }

  服务器

  {{{

  听

  80;

  服务器名称

  myapp.example.com;

  根

  /var/www/myapp/html;

  地点

  / {{{{

  指数

  index.html;

  }

  地点

  /静止的/

  {{{

  别名

  /var/django/projects/myapp/static/;

  }

  地点

  /主要的 {

  包括

  /etc/nginx/uwsgi_params;

  uwsgi_pass

  django;

  uwsgi_param

  主机$主机;

  uwsgi_param

  X-REAL-IP $ remote_addr;

  uwsgi_param

  x-forwarded $ proxy_add_x_forwarded_for;

  uwsgi_param

  X-Forwarded Proto $ http_x_forwards_proto;

  }

  }

  }

  提示4-静态文件缓存的实现

  缓存静态内容包括:保留不经常更改的文件的副本 - 不经常将指数的小时或永远存储在其他位置而不是应用程序服务中。类型的静态内容是在网页中经常使用的JPEG图片。

  缓存静态文件是提高应用程序性能的常见手段。它经常使用:

  1.用户浏览器

  2.互联网提供商 - 从公司的网络到Internet提供商(ISP)

  3. Web服务,本文中提到

  在Web服务器上实现静态文件缓存有两个好处:

  1.为用户提供快速服务-NGINX已针对静态文件的缓存进行了优化,并且静态内容请求的处理速度比应用程序服务快。

  2.减少应用程序服务负载 - 应用程序不需要处理Web服务已接管的缓存静态文件。

  缓存静态文件也可以在单个服务器上实现,但是基础硬件资源仍然通过Web服务和应用程序服务共享。如果Web服务需要处理频率的静态文件访问 - 甚至大量 - 硬件资源可以在应用程序服务中使用的将变得更少,并且某些功能可能会减慢。

  如果要支持浏览器缓存,则需要正确设置静态文件的头信息。例如,httpcache控件(尤其是其最大年龄设置),到期和实体。如果您想了解-Depth,请参阅NGINX加管理员指南:使用NGINX为UWSGI和DJANGO提供应用程序网关

  下面的NGINX配置代码用于缓存静态文件,包括JPEG文件,GIF文件,PNG文件,MP4文件,PowerPoint文件和其他文件,请替换您自己的网站。

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17

  18

  19

  20

  21

  22

  23

  24

  25

  26

  27

  28

  服务器

  {{{

  #

  替换您的网络服务器的URL

  “”

  服务器名称

  ;

  根

  /var/www/example.com/htdocs;

  指数

  index.php;

  Access_log

  /var/log/nginx/example.com.access.log;

  error_log

  /var/log/nginx/example.com.error.log;

  地点

  / {{{{

  try_files

  $ uri $ uri / / index.php?$ in;

  }

  地点

  ?.php $ {

  try_files

  $ URI = 404;

  包括

  fastcgi_params;

  #

  替换Python服务器的插座或地址和端口

  fastcgi_pass

  unix:/var/run/php5-fpm.sock;

  #fastcgi_pass

  127.0.0.1:9000;

  }

  地点

  ?*。(ogg | ogv | svg | svgz | eot | otf | woff | mp4 | ttf | css | arom | atom | js | jpg

  |jpeg |gif |PNG |ICO |zip |TGZ |GZ |GZ |GZ |GZ |GZ |GZ |GZ |GZ |GZ |GZ |GZ |GZ |GZ |GZ |GZ |RAR |Bz2 |Doc |XLS |exe |ppt |焦油|中

  |Midi |wav |BMP |RTF)$

  {{{

  到期

  最大限度;

  log_not_found

  离开;

  Access_log

  离开;

  }

  }

  提示5-实践微服务

  微腔可以显着改善Python,PHP和其他一些语言开发应用程序服务性能。根据它是否适用于缓存,我们可以将网页分为三类:

  静态文件 - 类似的文件适用于缓存,请参见技能4。

  动态的,非人格化的页面 - 由于需要刷新,这些文件通常不适合缓存。例如,E-商业用户在登录之前已经看到的页面(请参阅一点) - 可用产品 - 可用的产品并推荐类似的产品产品经常更改,因此必须生成新页面。但是,如果有另一个用户,请在10毫秒之后发送相同的请求,缓存并将前一个用户看到的网页发送给后者用户将变得合理。

  动态的个性化页面 - 这些不适合缓存,因为它们针对特定用户。同一用户不想两次看到相同的个性化页面。例如,不应向其他用户显示E-商业用户的页面。

  可以缓存静态文件和非个体动态内容

  Micro -Cache适用于上面提到的第二类页面 - 非个人化页面。“ Micro”是指短时仅一秒钟,它不会影响页面的刷新。但是,此短缓存可以大大减少应用程序服务的负载,尤其是当流量大。在缓存间隔中,相同的内容由10或20生成,甚至100次,并进行调整以生成一次,并缓存以为其他用户提供缓存内容。

  这种效果令人惊讶。如果在一秒钟内处理了大量请求,则一项服务将变得非常慢,但是如果处理一个请求,它将变得很快。(包括任何个性化页面)。您的Owen Garrett有一个博客有关微服务优势的详细信息,其中包含配置代码。修改的主要场所是将代理缓存的到期时间设置为一秒钟,只能完成几行配置代码。

  1

  2

  3

  4

  5

  6

  proxy_cache_path

  /tmp/cache keys_zone =缓存:10m级别= 1:2

  intactive = 600s max_size = 100m;

  服务器

  {{{

  proxy_cache

  缓存;

  proxy_cache_valid

  200

  1s;

  Em

  }

  有关更多配置样本,请参见有关Python和Uwsgi如何使用Nginx的Tyler Hicks Wright。

  总结

  在第一部分中,我们审查了在单个机器环境中改善Python应用程序性能以及使用缓存的解决方案。如果是一台机器,可以将缓存应用于反向代理服务器或独立的缓存服务(缓存的性能比独立服务性能优于独立服务性能。分布式环境。

  如果您想在应用程序中使用更多的Nginx Plus功能,监视真实的时间事件并在线修改配置,则可以打开30天免费试用版,或与我们联系以获取真实示例。

  数据库中存储的文件是HTML的文本格式,如下

  只需在前模板文件中使用{%autoescape off%}

  结论:以上是首席CTO注释引入的Django网页的所有内容,分为四个部分。我希望这对每个人都会有所帮助。如果您仍然想了解有关此信息的更多信息,请记住收集并关注此网站。