Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.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
Python Django Url未使用查询参数解析_Python_Django_Django Urls - Fatal编程技术网

Python Django Url未使用查询参数解析

Python Django Url未使用查询参数解析,python,django,django-urls,Python,Django,Django Urls,我有一个问题,需要为GET请求传入查询参数,但Django没有正确地将URL解析到视图 My urls.py如下所示: from django.conf.urls.defaults import * urlpatterns = patterns('', url(r'^confirm_cancel', 'myapp.views.confirm_cancel_method', name='myapp_confirm_cancel'

我有一个问题,需要为GET请求传入查询参数,但Django没有正确地将URL解析到视图

My urls.py如下所示:

   from django.conf.urls.defaults import * 
   urlpatterns = patterns('',
       url(r'^confirm_cancel',
          'myapp.views.confirm_cancel_method',
           name='myapp_confirm_cancel'),
       )
def confirm_cancel_method(request, some_id=None):
    some_id = request.REQUEST.get('some_id', some_id)
    some_record = get_object_or_404(SomeModel, pk=some_id)
    ...
当我转到/confirm\u cancel?some\u id=x时,我得到一个404,告诉我“没有与查询匹配的MyModel”。当我在视图处理程序中设置断点时,当我转到该url时,它不会被命中

但是,如果我转到/confirm\u cancel/x/,我的视图断点确实会被击中

还有一件事需要注意,它在Django1.1中起作用,但自从我升级到1.2之后,它就被破坏了

有什么想法吗


谢谢

你有没有检查过这是否是一例心脏病

我认为问题不在于你的url。您是否在视图中的某个位置使用了类似于
get\u object\u或\u 4o4
的快捷方式?例如:

get_object_or_404(MyModel, pk=99)

如果表中没有主键为99的记录,则会导致“没有与给定查询匹配的MyModel。”

理想情况下,它应该是这样的:

   from django.conf.urls.defaults import * 
   urlpatterns = patterns('',
       url(r'^confirm_cancel',
          'myapp.views.confirm_cancel_method',
           name='myapp_confirm_cancel'),
       )
def confirm_cancel_method(request, some_id=None):
    some_id = request.REQUEST.get('some_id', some_id)
    some_record = get_object_or_404(SomeModel, pk=some_id)
    ...
更新

抱歉,刚才看到您关于断点的说明。我建议您将配置更改为:

from django.conf.urls.defaults import * 
urlpatterns = patterns('',
    url(r'^confirm_cancel/?$',
       'myapp.views.confirm_cancel_method',
        name='myapp_confirm_cancel'),
    )

在末尾添加
/?$
意味着只有
/confirm\u cancel
/confirm\u cancel/
将与url匹配。现在,因为您没有结尾
$
任何以
confirm\u cancel
开头的内容都将匹配。修复该模式将至少解决此问题。

我已复制了所有其他u我的帖子中url.py中的rl模式

原来问题是我在
urlpatterns
的顶部有一个
r'^(?p\w+/?$”

下一次,我将学习粘贴所有内容,而不是挑选我认为有问题的代码行


奇怪的是,这并没有导致Django 1.1崩溃……我想这是一个在1.2中修复的bug

是的,我使用的是get_object_或_404(),但在该行被命中之前,我插入了一个调试断点,而该断点根本没有被命中。因此,这不是它抛出404的地方。试图缩小范围…粘贴的错误消息表明找不到模型,而不是URL处理程序。粘贴视图代码和整个堆栈跟踪可能会有帮助广告。是的,斜杠或不斜杠,它仍然失败。如果你不想让人们浪费时间猜东西,请发布查看代码。很高兴它被修复。继续接受你自己的答案,这样问题就被认为解决了(对于其他面临此问题的人来说,解决方案显而易见).我几乎要问列表前面是否有匹配的url模式。