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

django是什么是中间键(django组合主键)

时间:2023-03-08 23:43:19 网络应用技术

  今天,首席CTO Note将与您分享Django与中间密钥相关的内容。其中,将详细介绍Django联合主键。如果您可以解决您现在面临的问题,请不要忘记注意此网站。让我们现在开始!

  本文目录清单:

  1.自定义Django中间件的详细说明(12)2。在各个方面,django和烧瓶两个框架的优点和缺点是什么。[Python Foundation] Django中间件应用程序方案?6,2010-10-26 Django的会话和下面的中间件CSRF位于settings.py文件下方。

  1.如果打开Django时端口被占据,则可以使用以下方法查看端口的情况。

  2.杀死被占领的港口

  (1)烧瓶

  烧瓶确实是“轻”。这确实是微框架。从Django到烧瓶的开发人员将确定

  烧瓶是免费的,灵活的,并且具有强大的可扩展性。可以广泛使用第三方库的选择。您可以在开发过程中结合自己喜欢的车轮。它也可以与最受欢迎的Python库结合使用。

  简介很简单,即使没有许多网络开发经验,您也可以快速建立网站

  非常适合小型网站

  非常适合开发Web服务API

  没有开发大型网站的压力,但是代码架构需要由其本身设计。开发成本取决于开发人员的能力和经验

  各个方面的表现等于或优于django

  django自己的或第三方赞美功能,烧瓶总是找到第三方图书馆,就像第三方图书馆一样

  烧瓶是灵活开发的,python基本上像烧瓶一样,但可能与django混合

  烧瓶和关系数据库的组合并不比Django弱,并且其与NOSQL数据库的合作远胜于Django

  烧瓶比django更具Pythonic,并且与Python的哲学更一致

  (2)Django

  Django太重了。除了网络框架,使用ORM和模板引擎,灵活性和自由度不够高

  Django可以开发小型应用程序,但总会有一种“用牛刀杀死鸡”的感觉

  Django自己的ORM非常好,全面评估略高于Sqlalchemy

  Django自己的模板引擎简单易用,但其强大而全面的评估略低于Jinja

  Django自己的ORM也使Django与关系数据库之间的关系过高。如果您想使用NOSQL数据,例如MongoDB,则需要选择合适的第三方图书馆。

  Django目前支持非官方模板引擎(例如Jinja)

  Django自己的数据库管理应用程序受到了良好接收

  Django非常适合开发企业级别的网站:快速,可靠,稳定

  Django成熟,稳定且完美,但与烧瓶相比,Django的整体生态相对封闭

  Django是Python Web框架的先驱。有很多用户。第三方库是最丰富的。最好的Python图书馆。

  Django也更容易开始。开发文件是详细的,完美的,丰富的相关信息

  CSRF_Token在Django中编写表单时的作用:

  Django下的CSRF预防机制

  CSRF预防机制

  CSRF的防御可以从服务器和客户端启动。从服务到服务,防御效果更好。现在,一般的CSRF防御也可以在服务器上执行。

  令牌防御的总体想法是:

  步骤1:后端随机生成一个令牌,并将此令牌保存在会话状态。同时,后端将把这个令牌放在首页上。

  步骤2:当前端需要启动请求(例如发布)时,将此令牌添加到请求数据或头部信息中,然后将其传递到后端;

  步骤3:后端验证前端请求是否一致的令牌和会话是一致的;

  1. Django下的CSRF预防机制

  当Django首次响应客户端的请求时,将在服务器端随机生成一个令牌,并将其放置在cookie中。

  这可以避免受到CSRF的攻击。

  在Templete中,将{%CSRF_Token%}标记添加到每个帖子表单中。

  在HTTP响应的曲奇中,Django将为您添加一个CSRFTKOKN字段,该值是自动令牌令牌

  在所有帖子模板中,添加一个{%csrf_token%}标签,其功能是添加隐藏的输入标签以形式,如下所示

  而且此csrf_token = cookie.csrftoken,有上下文['csrf_token'] = request.cookies ['csrtoken']当呈现模板['csrtoken']时

  通过表单将帖子发送到服务器时,该表单包含隐藏在其上隐藏的输入项上的输入项。服务器收到它后,Django将在此请求中验证cookie中csrftkoken字段的值以及表单中的csrfmiddletken字段的值。如果是相同的,则表示这是法律请求,否则,此请求可能来自其他人的CSRF攻击,并退回403禁止。

  当通过AJAX向服务器发送帖子请求时,需要添加X-CSRFTOKEN标头。值是cookie中csrftoken的值。收到服务湍流后,Django将验证该请求中的CSRFTOKEN字段,并且AJAX邮政消息标题X-CSRFTKEN标头是相同的。如果相同,则表明这是法律请求

  具体实施方法

  Django已完成供用户完成伪造的交叉点请求,并通过django.middle.csrf.csrf.csrfviewmiddleware.for Django,反cross -cross -site请求伪造功能分为全球和本地。

  全球的:

  中间件django.middleware.csrf.csrfviewmiddleware

  当地的:

  @csrf_protect,即使在设置中没有全局中间件,也强行设置了当前功能的fake -cross -stoite请求。

  @csrf_exempt,即使设置中有全局中间件,取消当前功能抗-cross -Cross -site请求伪造功能。

  注意:来自django.views.decocotors.csrf导入csrf_exempt,csrf_protect

  1.原则

  将csrftoken添加到客户端页面,验证服务器,并由服务器验证的工作由'django.middleware.csrfviewmiddleware..csrfviewmiddleware..ine完成,这有两种捍卫Django中CSRF攻击的方法:

  1.以形式添加csrftoken

  2.将X-CSRFTKEN请求头添加到请求请求。

  注意:Django默认情况下对所有帖子请求进行了CSRFTKOOK验证。如果验证失败,则403错误等待。

  django套装在cookie中

  VUE发送职位403:CSRF失败:CSRF代币任务或不正确的解决方案:

  老实说,直到到目前为止,我都不欣赏django。这不是我的认知中的微妙设计。这只是功能所积累的“成熟解决方案”。但是,一切的兴起都是时代的选择。您不喜欢它,但需要它。希望有一天,Python可以拥有越来越丰富的成熟解决方案,并且不再因性能和维护而受到批评。(Fit End)

  将其本质带到滴度上,Django的优势很方便。我们的源代码阅读的目的是探索其便利性的本质。阅读源代码的计划对每个地方都不好,而是解释功能的功能。

  django-admin startproject helloworld可以生成django项目。命令行是EXE格式。

  manage.py将参数交给了命令行。

  execute_from_command_line()通过命令行参数创建管理类。然后运行他的execute()。

  如果设置了重新加载,请在启动之前检查_errors。

  check_errs()是一个关闭,因此在上一篇文章的末尾是(django.setup)()。

  查看最后一个句子设置.installed_apps.grab从设置

  请注意,此设置不是我们项目中的设置。

  这是设置类的懒负载包装包装,直到__getAttr __。然后从设置类的实例中获取值,然后说将其分配给您自己的__ -dict__(我会直接找到它下次我自己,因为__getAttr __优先级)

  为了促进调试,我们直接编写一个run.py。

  在项目下创建一个run.py,以模拟运行服务器命令

  调试抓取设置_MODULE

  回到setup()中的最后一句话

  开始观看apps.populate()

  首先查看本段

  这些应用最终被封装在appconfig中。

  随后,调用了每个AppConfig的import_models()和ready()方法。

  应用程序的加载部分通常是这样的

  为了促进调试,我们重写了最后一句话

  RES的类型是命令django.contrib.staticfiles.management.commands.runserver.com和object at 0x00000101ED5163A0

  重点是第二个句子,让我们跳到run_from_argv()方法,这是几个处理参数。

  用Pycharm指向手柄将进入基类,该基类无法获得正确的方向。实际上,子类已重写此方法。

  这里有两种情况。如果加载重新加载,它将直接执行inner_run(),并且项目首先从其他逻辑开始。

  当Django项目启动时,它实际上将启动两次。如果我们在项目入口(Manage.py)中设置一个贴心,您会发现它将打印两次。

  在第一个启动开始时,django_autoreload_env却没有,无法输入启动逻辑。将输入crandt_with_reloader()。

  在这里,您将将django_autoreload_env放置为true,然后重新启动。

  第二次,您可以输入启动逻辑。

  在此创建一个Django主线程以传递innit_run()。

  随后,此线程创建了一个旋转式,通过reloader.run(django_main_thread)询问监护过程。

  让我们看一下django innion_run()的主线程。

  当我们看到WSGI时,Django的启动逻辑已经结束。下一个作业已移交给WSGI服务器

  这相当于我们之前在Fastapi中所说的话,然后将Fastapi的应用程序交给ASGI服务器(ASGI也是Django提出的,这两个基本上是同源的)

  那么WSGI来自哪里?让我们回头回去

  此设置是一个对象,它已从以前的操作中从settings.py配置文件中获取了自己的属性。因此,我们只需要转到settings.py配置文件即可找到。

  让我们找到此get_wsgi_application()。

  它将再次调用setup(),返回WSGIHANDLER类的实例很重要。

  这是WSGIAPP本身。

  load_middleware()是WSGIAPP构建中间件堆栈的唯一方法。

  如果您之前阅读了FastAPI源代码,则应该对中间件堆栈不陌生。

  应用程序入口→中间件堆栈→路由→路由节点→端点

  因此,WSGIAPP已完成此操作,并将服务器传递到应用程序入口的请求中,并且可以通过中间件与该路由分配。

  中间零件实际上是在过滤请求。所有请求过来,首先通过中间件,然后转到您的应用程序。该中间软件可用于过滤请求,认证等。

  33,CBV Plus装饰员

  -pela上课:添加课程

  表格django.utils.decorator导入method_decorator

  @method_decorator(login_auth,name ='get')

  @method_decorator(login_auth,name ='post')

  类UserInfo(视图):

  经过

  - 第二:添加到方法

  来自django.utils.decocortrt method_decoror

  类UserInfo(视图):

  @method_decorator(login_auth)

  def获取(自我,请求,args, *kwargs):

  经过

  如图所示

  ===================== dmind fige ======================================================

  结论:以上是首席CTO注释为所有人编写的Django的所有内容。感谢您阅读本网站的内容。我希望这对您有帮助。有关Django联合主键的更多信息,Django是什么中间密钥是中间密钥。不要忘记在此站点上找到它。