在 urls.py 文件中:
url(r'^api/user_info/(?P<username>[a-zA-Z\d]+)\&', 'corresponding.view')
url(r'^api/user_info/(?P<username>[a-zA-Z\d]+)', 'corresponding.view')
/api/user_info/username
始终会有 HTTP Get 参数。
问题在于,在 corresponding.view
函数中,username
将计算为“myusername?clientversion=2.0”,而不是“myusername”和 request.GET['clientversion'] = "2.0"
。
第一个 url
调用是 try catch 其中的 & 符号,但没有帮助。
提前致谢。
最佳答案
参见this question ;您不使用 Django 的 URLConf 访问查询参数。尝试使用 URL 解析器处理 ?
或 &
字符不会带来幸福。
只需使用以下 URL 模式:
url(r'^api/user_info/(?P<username>\w\+)/$', 'corresponding.view')
并访问 corresponding.view()
函数中的 clientversion
查询参数:
def view(request):
client_version = request.GET.get('clientversion')
...
或者,如果您说它应该是强制,
from django.http import Http404
def view(request):
try:
client_version = request.GET['clientversion']
except KeyError:
raise Http404
关于regex - 带有 HTTP GET 参数的 django url 调度程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12080478/