提前抱歉,如果这个问题看起来有点多余,但是真的很困扰我.
我有一组用Django编写的API,由以下URL定义.
# urls.py
import ...
urlpatterns = [
url(r"^api/v1/account", include(profile.urls))
]
Run Code Online (Sandbox Code Playgroud)
和
# profile/urls.py
import ...
urlpatterns = [
url(r"^$", AccountAPI.as_view()),
url(r"^/login$", LoginAPI.as_view()),
url(r"^/logout$", LogoutAPI.as_view())
]
Run Code Online (Sandbox Code Playgroud)
此配置应仅允许URL:
/api/v1/account
/api/v1/account/login
/api/v1/account/logout
Run Code Online (Sandbox Code Playgroud)
这项工作符合我的目的,但我一直有类似的警告(我有几个API使用此规则定义,警告列表更大):
?: (urls.W002) Your URL pattern '^/login$' has a regex beginning with a '/'. Remove this slash as it is unnecessary.
?: (urls.W002) Your URL pattern '^/logout$' has a regex beginning with a '/'. Remove this slash as it is unnecessary.
Run Code Online (Sandbox Code Playgroud)
如果我删除斜杠,服务器将不会验证我定义的URL.为此,我必须有一个斜杠到网址的第一级,如:
# urls.py
import ...
urlpatterns = [
url(r"^api/v1/account/", include(profile.urls))
]
Run Code Online (Sandbox Code Playgroud)
这将使帐户调用以斜杠结束,这是我不想要的.
我觉得我已经将我发现的最优雅的方式定义为我的目的,并且在我的日志中继续发出这种悲伤的警告.
难道我做错了什么?有没有正确的方法来定义网址而不影响我为他们选择的结构?或者有一种方法可以关闭此警告?
您可以使用SILENCED_SYSTEM_CHECKS选项关闭警告.
例:
SILENCED_SYSTEM_CHECKS = ['urls.W002', 'security.W019']
Run Code Online (Sandbox Code Playgroud)
当我写支票时,我错误地假定了带有尾部斜杠的网址,例如/api/v1/account/和/api/v1/account/login/。
如果不使用斜杠,则^/可以使用正确的开头的url模式,并且W002检查结果为假。
从Django 1.10.2开始,如果您有APPEND_SLASH=False设置,则禁用该检查。有关讨论,请参见票证27238。
| 归档时间: |
|
| 查看次数: |
1950 次 |
| 最近记录: |