我正在开发一个Webapp,可以让您轮询给定日期的Django后端的IRC日志。我的网址结构是:
example.tld/weblogs/<example channel>/dl/<example date>.<example format>
用户可以通过GET查询以下网址方案:
example.tld/weblogs/<example channel>/
以获得IRC数据的最后100行。
views.download
当请求是显式GET时,我的URL匹配文件正确地路由到正确的视图(),但是我无法example.tld/weblogs/<example channel>/dl/
在Just上执行POST,并且无法将POST的表单数据发送到与显式GET相同的视图。
例如,如果用户键入显式URL,example.tld/weblogs/foo/dl/2015-01-01.json
则请求将被正确路由到正确的视图。但是,如果表单将POST提交到example.tld/weblogs/foo/dl/
,则POST请求将发送到处理对Just的请求的视图example.tld/weblogs/foo
(在这种情况下)。
项目urls.py
:
from django.conf.urls import include, url
from django.contrib import admin
from log import views
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^weblog/', include('log.urls')),
]
log.urls
:
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.weblogs, name='weblogs'),
url(r'^(?P<channel>[^, ]{1,200})/$', views.channel, name="channel"),
url(r'^(?P<channel>[^, ]{1,200})/dl/(?P<date>[0-9]{4}-[0-9]{2}-[0-9]{2}).(?P<format>(html|json|yaml|xml))', views.download),
]
GET请求如下所示:
"GET /weblog/example/dl/2015-08-20.yaml/ HTTP/1.1" 200 4621
POST请求如下所示:
"POST /weblog/example/dl/ HTTP/1.1" 200 74
在您的正则表达式中,[^, ]
匹配除逗号和空格(包括正斜杠)之外的任何字符。
要排除正斜杠,请将其更改为[^,/ ]
。另外,类似的东西[-\w] +
可能是合适的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句