GVKun编程网logo

django urlpatterns中如何基于HTTP方法进行区分(django url path区别)

12

在本文中,我们将带你了解djangourlpatterns中如何基于HTTP方法进行区分在这篇文章中,我们将为您详细介绍djangourlpatterns中如何基于HTTP方法进行区分的方方面面,并解

在本文中,我们将带你了解django urlpatterns中如何基于HTTP方法进行区分在这篇文章中,我们将为您详细介绍django urlpatterns中如何基于HTTP方法进行区分的方方面面,并解答django url path区别常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的Delphi 与 DirectX 之 DelphiX(17): TPictureCollectionItem.PatternWidth、PatternHeight、django 2 urlpatterns 中正则匹配路由、Django http 和 https 官网解答、Django URLconf中urlpatterns的Regular Expression语法说明

本文目录一览:

django urlpatterns中如何基于HTTP方法进行区分(django url path区别)

django urlpatterns中如何基于HTTP方法进行区分(django url path区别)

我在查找有关此信息时遇到一些困难,这可能不是正确的方法。我想基于http方法(GET或POST或DELETE或PUT)将请求路由到两个不同的视图函数。

正如通常在REST API中所做的那样,这意味着基于HTTP方法,相同的URL具有不同的含义。

我在django的urls.py文件中看不到做到这一点的方法,我想要这样的东西:

url(r''^tasks$'', ''app.views.get_tasks'', method=''get''),url(r''^tasks$'', ''app.views.create_task'',  method=''post''),

(注意:我正在使用django 1.4)

答案1

小编典典

我认为您可以在不向URL添加一堆逻辑的情况下使用不同的函数来完成此操作(这从来都不是个好主意),但是您可以在函数中检查request方法:

def myview(request):    if request.method == ''GET'':        # Code for GET requests    elif request.method == ''POST'':        # Code for POST requests

您还可以切换到基于类的视图。然后,您只需要为每个HTTP方法定义一个方法:

class CreateMyModelView(CreateView):    def get(self, request, *args, **kwargs):        # Code for GET requests    def post(self, request, *args, **kwargs):        # Code for POST requests

如果您决定采用基于课程的路线,那么另一个不错的资源是http://ccbv.co.uk/。

Delphi 与 DirectX 之 DelphiX(17): TPictureCollectionItem.PatternWidth、PatternHeight

Delphi 与 DirectX 之 DelphiX(17): TPictureCollectionItem.PatternWidth、PatternHeight

总结

以上是小编为你收集整理的Delphi 与 DirectX 之 DelphiX(17): TPictureCollectionItem.PatternWidth、PatternHeight全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

django 2 urlpatterns 中正则匹配路由

django 2 urlpatterns 中正则匹配路由

django 2 urlpatterns 中正则匹配路由:

在项目的urls.py中导入re_path:

Django http 和 https 官网解答

Django http 和 https 官网解答

概要: 运行Werkzeug调试器的RunServerPlus典型runserver

介绍


此项要求您安装了
Werkzeug WSGI实用程序。Werkzeug包含一个kick ass调试器,它可以提供良好的调试回溯并添加一个基于AJAX的调试器(允许在traceback的帧的上下文中执行代码)。此外,它提供了一个很好的源代码访问视图。

入门

要开始,我们只使用runserver_plus命令而不是普通的 runserver命令:

$ python manage.py runserver_plus

* Running on http://127.0.0.1:8000/
* Restarting with reloader...

Validating models...
0 errors found

Django version X.Y.Z, using settings ''screencasts.settings''
Development server is running at http://127.0.0.1:8000/
Using the Werkzeug debugger (http://werkzeug.pocoo.org/)
Quit the server with CONTROL-C.

注意:所有正常的runserver选项都适用。换句话说,如果您需要更改端口号或主机信息,您可以像平常一样进行更改。

用法

当发生异常时,将显示Werkzeug回溯页面,而不是默认的Django回溯页面。

WERKZEUG  - 回溯

除了典型的追溯信息,我们还有几个选项。将鼠标悬停在特定的追溯线上时会出现这些选项。请注意,右侧有两个按钮:

WERKZEUG选项

选项是:

查看源

这将显示回溯下方的源:

WERKZEUG源

能够查看源文件非常方便,因为它提供了有关错误的更多上下文信息。实际的追溯区域突出显示,因此很容易发现。

UI的一个尴尬方面是页面不会滚动到底部。起初我认为没有发生任何事情因为这个。

交互式调试控制台

单击此按钮可打开您所在的追溯线下的新窗格。这是拍摄的钱:

WERKZEUG调试器

基于ajax的控制台出现在窗格中,您可以开始调试。请注意,在上面的屏幕截图中,我做了一个print environ,以查看进入该函数的环境参数中的内容。

警告不能在任何类型的生产环境中使用它。甚至没有快速问题检查。我不能强调这一点。交互式调试器允许您针对服务器评估python代码。你被警告过了。

SSL 

runserver_plus还支持SSL,因此您可以轻松调试使用https时弹出的错误。要使用SSL,只需提供证书的文件名; 将自动生成密钥和证书文件:

$ python manage.py runserver_plus --cert-file cert.crt
Validating models...
0 errors found

Django version X.Y.Z, using settings ''mysite.settings''
Development server is running at http://127.0.0.1:8000/
Using the Werkzeug debugger (http://werkzeug.pocoo.org/)
Quit the server with CONTROL-C.
 * Running on https://127.0.0.1:8000/
 * Restarting with reloader
Validating models...
0 errors found

Django version X.Y.Z, using settings ''mysite.settings''
Development server is running at http://127.0.0.1:8000/
Using the Werkzeug debugger (http://werkzeug.pocoo.org/)
Quit the server with CONTROL-C.

运行此命令后,可以通过https://127.0.0.1:8000访问您的Web应用程序 

您还会发现在当前工作目录中创建了两个文件:密钥文件和证书文件。如果再次运行上述命令,将重复使用这些证书文件,这样您就不必每次都从浏览器继续接受自己生成的证书。如果您已经拥有证书,您还可以为要使用的证书提供特定文件:

$ python manage.py runserver_plus --cert-file /tmp/cert.crt

请注意,如果要重用现有证书,则需要使用OpenSSL库和Werkzeug 0.9或更高版本。

要安装OpenSSL:

$ pip install pyOpenSSL

证书路径

您可以配置.crt和.key文件的不同路径。至少有一个--cert-file--key-file必须定义为使用SSL。

您可以使用--cert-file选项或不建议使用的--cert选项(目前是别名)将路径设置为.crt文件--cert-file如果未设置此选项,则runserver_plus假定该选项与该文件位于同一目录中--key-file

您可以使用--key-file选项将路径设置为.key文件如果未设置此选项,则runserver_plus假定该选项与该文件位于同一目录中--cert-file

如果要创建新文件,则可以在没有扩展名的情况下传递文件名。将创建具有此名称和.crt和.key扩展名的正确文件。

配置

RUNSERVERPLUS_SERVER_ADDRESS_PORT设置可以被配置为指定地址和端口的开发服务器应该绑定。

如果您发现自己频繁启动服务器:

$ python manage.py runserver_plus 0.0.0.0:8000

您可以使用设置自动将开发默认为地址/端口:

RUNSERVERPLUS_SERVER_ADDRESS_PORT = ''0.0.0.0:8000''

要确保Werkzeug可以登录到控制台,您可能需要在设置中添加以下内容:

LOGGING = {
    ...
    ''handlers'': { ... ''console'': { ''level'': ''DEBUG'', ''class'': ''logging.StreamHandler'', }, }, ''loggers'': { ... ''werkzeug'': { ''handlers'': [''console''], ''level'': ''DEBUG'', ''propagate'': True, }, }, } 

IO调用和CPU使用

gh625中所述, runserver_plus可以看到使用大量CPU并在空闲时生成许多I / O.

这是由于Werkzeug实施自动重新加载功能的方式。它支持两种通过stat轮询文件系统事件进行自动重新加载的方法

统计轮询方法是相当蛮力和汽车无问题STAT这会导致CPU和IO负载系统调用。

如果可能的话尝试安装Watchdog软件包,这应该会自动导致Werkzeug使用 文件系统事件

您可以在Werkzeug文档中阅读更多相关信息

使用默认值1秒的统计轮询时,您还可以增加轮询间隔这将减少CPU负载,但代价是文件编辑需要更长时间才能获取。

这可以在django设置文件中设置两种方式:

RUNSERVERPLUS_POLLER_RELOADER_INTERVAL = 5

或作为一个commad行参数:

$ python manage.py runserver_plus --reloader-interval 5

调试器

以下有关调试器PIN的文本是从Werkzeug  文档中 逐字逐句获取的,其中包含调试器PIN

从Werkzeug 0.11开始,调试器还受PIN保护。这是一个安全帮助程序,使得调试程序在生产中被利用的可能性降低,因为人们发生了使调试器保持活动状态的问题。默认情况下启用基于PIN的身份验证。

当调试器出现时,首次使用时它将提示输入打印到命令行的PIN。PIN以特定于项目的稳定方式生成。在某些情况下,可能无法在重新启动之间生成稳定的PIN,在这种情况下,可以通过环境变量WERKZEUG_DEBUG_PIN提供显式PIN。这可以设置为一个数字,并将成为PIN。此变量也可以设置为off值以完全禁用PIN检查。

--nopin调用runserver_plus命令时,也可以通过传递参数来禁用PIN 

如果PIN输入错误太多次,则需要重新启动服务器。

此功能不应该完全保护调试器。它旨在使攻击者更难以利用调试器。切勿在生产中启用调试器。

Django URLconf中urlpatterns的Regular Expression语法说明

Django URLconf中urlpatterns的Regular Expression语法说明

基本上所有RE符号都可以在urlpatterns使用,本文主要将常用在网址上的符号进行整理

符号 说明 ^ 指定起始字符或字符串,如放在[]中表示否定 $ 指定终止符或字符串 . 任何一种字符都符合 所有的字母以及数字("/") 对应到原有的字符 [...] 中括号中的内容用来表示一个字符的格式设置 \d 任何一个数字字符,等于[0-9] \D 非数字的字符,等于[^0-9] \w 任何一个字母或数字字符,等于[a-zA-Z0-9] \w 任何一个非上述的字符,等于[^a-zA-Z0-9] ? 代表前面一个字符样式可以重复出现0次或1次 * 代表前面一个字符样式可以重复出现0次或0次以上 + 代表前面一个字符样式可以重复出现1次或1次以上 {m} 大括号中的数字m,代表前一字符可以出现m次 {m,n}

代表前一字符可以出现m-n次

| 或,即两种格式设置任一种都可以 (...) 小括号中间若匹配,则取出成为一个参数 (?P<name>) 同上,但是指定此参数名称为name

如何验证RE设计URL准确性?

    有一个网站是做这方面测试:http://pythex.org/,界面如下:

    

QQ截图20170714161026.png

    使用方法也很简单:

        1. Your regular expression 输入我们设计的RE

        2. Your test string 输入要验证的网址字符串

        3. Match result    会显示匹配的结果

关于django urlpatterns中如何基于HTTP方法进行区分django url path区别的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Delphi 与 DirectX 之 DelphiX(17): TPictureCollectionItem.PatternWidth、PatternHeight、django 2 urlpatterns 中正则匹配路由、Django http 和 https 官网解答、Django URLconf中urlpatterns的Regular Expression语法说明等相关知识的信息别忘了在本站进行查找喔。

本文标签: