django中url中使用分号的url需要什么模式

时间:2015-12-22 03:55:49

标签: python regex django django-rest-framework

我有这样的网址

http://www.example.com/user;age=9;name=dsds-dsds-ddd

现在我有这个POST的网址

url(r'^user$',
    views.CreateView.as_view(),
    name='user-create')

现在我还希望将上面的url与分号分隔的参数匹配。

我无法找到

  1. 要定义的网址格式
  2. 如何在视图中抓取这些参数
  3. 我试过这个

    url(r'^user;(?P<params>)$',
    

2 个答案:

答案 0 :(得分:1)

urls.py

url(r'^user/', views.test)

views.py

from urllib import unquote

def test(request):
    url_with_semicolon = unquote(request.get_full_path())
    print url_with_semicolon.split(';')[1:]
    return HttpResponse('ok')

输入:

http://www.example.com/user/age=9;name=dsds-dsds-ddd

输出:

[u'age=9', u'name=dsds-dsds-ddd']

希望,这有助于你

答案 1 :(得分:1)

检查django是否启用了APPEND_SLASH功能,这可能会强制您在每个可能有问题的网址末尾添加斜杠/

尝试这样做:

url(r'^user/(?P<myparams>[\w;.]/$',
    views.CreateView.as_view(),
    name='user-create')

在这种情况下,您的网址必须是这样的:

http://www.example.com/user/;age=9;name=dsds-dsds-ddd

django会在结尾处自动附加/并将其转换为:

http://www.example.com/user/;age=9;name=dsds-dsds-ddd/