Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django URL与GET变量不匹配_Django - Fatal编程技术网

Django URL与GET变量不匹配

Django URL与GET变量不匹配,django,Django,我有以下django URL: url(r'^companies/$', 'companies', name='companies'), 如果我转到http://localhost:8000/companies/它工作得非常好。但是,如果我尝试向URL添加任何GET变量,django将引发404错误。例如,如果我转到http://localhost:8000/companies/?c=1django提出了一个404。奇怪的是,404上写着: 当前URL,companys/,与其中任何一个都不匹

我有以下django URL:

url(r'^companies/$', 'companies', name='companies'),
如果我转到
http://localhost:8000/companies/
它工作得非常好。但是,如果我尝试向URL添加任何GET变量,django将引发404错误。例如,如果我转到
http://localhost:8000/companies/?c=1
django提出了一个404。奇怪的是,404上写着:

当前URL,
companys/
,与其中任何一个都不匹配

为什么我不能将GET变量传递到我的URL

我正在使用django 1.4

“公司”视图的定义如下:

def companies(request):

它不应该接受任何额外的参数,因为它们是GET变量,而不是URL参数-正确吗?我发誓我已经做了几百次了,而且一直都很有效…

好吧。找出了导致这种奇怪行为的原因。我有一个自定义上下文处理器,它正在调用
resolve(request.get\u full\u path())
。显然,如果URL中有任何GET变量,则会导致404。非常奇怪。

也许您的
公司
函数不接受任何参数?出示签名,请回答问题。只是
def公司(请求):
显然这是一个已知的问题<代码>解析(request.path)可以工作,并修复404。这一点都不奇怪<代码>请求。获取完整路径()返回URL路径和查询字符串。但是,
resolve
只需要一个简单的URL路径,因此它会尝试查找与您传入的字符串(包括查询字符串)匹配的URL模式。显然,不存在这样的urlpattern,所以您得到了404。正如您所确定的,您需要使用
request.path
,因为它不包括查询字符串。这很有意义。我想奇怪的是异常的行为——它没有告诉我如果你抛出Http404会发生什么,也没有给我回溯。它只是给了我一个普通的404,就好像我的URL.conf中的一个URL不匹配一样——很明显是这样的。它与任何内容都不匹配(由于查询字符串),因此它给了您一个标准404,就像您试图转到
/some/page/that/does/not/exist/