Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.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查询';s问题_Python_Django - Fatal编程技术网

Python Django查询';s问题

Python Django查询';s问题,python,django,Python,Django,我正在通过为企业家编写代码进行Django实践。 代码如下: from django.shortcuts import render, get_object_or_404 from django.http import HttpResponse from django.views import View from .models import KirrURL def kirr_redirect_view(request,shortcode=None,*args,**kwargs):

我正在通过为企业家编写代码进行Django实践。 代码如下:

from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse
from django.views import View

from .models import KirrURL

def kirr_redirect_view(request,shortcode=None,*args,**kwargs):

    #Method 1:

    obj = get_object_or_404(KirrURL, shortcode__iexact=shortcode)
    obj_url = obj.url

    #Method 2:

    qs = KirrURL.objects.filter(shortcode__iexact=shortcode)
    if qs.exists() and qs.count() == 1:
        obj = qs.first()
        obj_url = obj.url

    return HttpResponse("Hello : {sr}".format(sr=obj_url))
我所做的是从url中获取一些单词,并将其传递到kirr_redirect_视图,然后通过usde查询获取数据并返回一些单词。
该网站介绍了两种方法。第二种很好。当我改为第一种方法时,该方法突然出错,即使我传递了正确的关键字,我仍然从页面中获得404。

根据Django文档:

:

在给定的模型管理器上调用get(),但它会引发Http404,而不是模型的DoesNotExist异常

因此,如果没有匹配的记录,
get\u object\u或_404
将引发
404:content not found

其中,与第二种方法一样,如果不存在匹配,即如果
失败,则仍然发送
HttResposne
对象,默认状态为
200:OK


简言之,根据Django文档,您的
KireURL
模型没有与
shortcode\uuu iexact=shortcode
匹配的记录:

:

在给定的模型管理器上调用get(),但它会引发Http404,而不是模型的DoesNotExist异常

因此,如果没有匹配的记录,
get\u object\u或_404
将引发
404:content not found

其中,与第二种方法一样,如果不存在匹配,即如果
失败,则仍然发送
HttResposne
对象,默认状态为
200:OK


简言之,您的
KireURL
模型没有匹配的记录
shortcode\uuu iexact=shortcode

第二种方法是否显示您的url或只是不引发错误?筛选器永远不会引发任何异常,因为它看起来好像有多个具有相同短代码的对象,或者没有任何和进入if条件。这就是为什么get_object_或_404()会引发异常。

第二种方法是显示url还是不引发错误?筛选器永远不会引发任何异常,因为它看起来有超过1个具有相同短代码的对象,或者没有任何带if条件的对象。这就是为什么get_object_或_404()会引发异常。

我在这里添加了一些信息。这是我使用python shell运行代码时得到的信息

>>> from shortener.models import KirrURL
>>> from django.shortcuts import get_object_or_404
>>> obj = get_object_or_404(KirrURL,shortcode='pric3e')

Traceback (most recent call last):File"/Users/phil/Desktop/django110/lib/python3.5/site
packages/django/shortcuts.py", line 85, in get_object_or_404
return queryset.get(*args, **kwargs)
File "/Users/phil/Desktop/django110/lib/python3.5/site-packages/django/db/models/query.py", line 385, in get
self.model._meta.object_name
shortener.models.DoesNotExist: KirrURL matching query does not exist.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/Users/phil/Desktop/django110/lib/python3.5/site-packages/django/shortcuts.py", line 93, in get_object_or_404
raise Http404('No %s matches the given query.' % queryset.model._meta.object_name)
django.http.response.Http404: No KirrURL matches the given query.

>>> obj = KirrURL.objects.get(shortcode='pric3e')
>>> obj
<KirrURL: http://google.com>
>>> obj.id
1
>>> obj.url
'http://google.com'
>>来自shortener.models导入KirrURL
>>>从django.shortcuts导入获取对象或404
>>>obj=get_object_或_404(KirrURL,shortcode='pric3e')
回溯(最近一次调用):文件“/Users/phil/Desktop/django110/lib/python3.5/site
packages/django/shortcuts.py”,第85行,在get_object_或_404中
返回queryset.get(*args,**kwargs)
get中的文件“/Users/phil/Desktop/django110/lib/python3.5/site packages/django/db/models/query.py”,第385行
self.model.\u meta.object\u name
shortener.models.DoesNotExist:KirrURL匹配查询不存在。
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/Users/phil/Desktop/djang110/lib/python3.5/site packages/django/shortcuts.py”,第93行,在get\u object\u或\u 404中
raise Http404('没有%s与给定查询匹配。'%queryset.model.\u meta.object\u name)
django.http.response.Http404:没有与给定查询匹配的KirrURL。
>>>obj=KirrURL.objects.get(shortcode='pric3e')
>>>obj
>>>对象id
1.
>>>obj.url
'http://google.com'

我在这里添加了一些信息。这是我使用python shell运行代码时得到的信息

>>> from shortener.models import KirrURL
>>> from django.shortcuts import get_object_or_404
>>> obj = get_object_or_404(KirrURL,shortcode='pric3e')

Traceback (most recent call last):File"/Users/phil/Desktop/django110/lib/python3.5/site
packages/django/shortcuts.py", line 85, in get_object_or_404
return queryset.get(*args, **kwargs)
File "/Users/phil/Desktop/django110/lib/python3.5/site-packages/django/db/models/query.py", line 385, in get
self.model._meta.object_name
shortener.models.DoesNotExist: KirrURL matching query does not exist.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/Users/phil/Desktop/django110/lib/python3.5/site-packages/django/shortcuts.py", line 93, in get_object_or_404
raise Http404('No %s matches the given query.' % queryset.model._meta.object_name)
django.http.response.Http404: No KirrURL matches the given query.

>>> obj = KirrURL.objects.get(shortcode='pric3e')
>>> obj
<KirrURL: http://google.com>
>>> obj.id
1
>>> obj.url
'http://google.com'
>>来自shortener.models导入KirrURL
>>>从django.shortcuts导入获取对象或404
>>>obj=get_object_或_404(KirrURL,shortcode='pric3e')
回溯(最近一次调用):文件“/Users/phil/Desktop/django110/lib/python3.5/site
packages/django/shortcuts.py”,第85行,在get_object_或_404中
返回queryset.get(*args,**kwargs)
get中的文件“/Users/phil/Desktop/django110/lib/python3.5/site packages/django/db/models/query.py”,第385行
self.model.\u meta.object\u name
shortener.models.DoesNotExist:KirrURL匹配查询不存在。
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/Users/phil/Desktop/djang110/lib/python3.5/site packages/django/shortcuts.py”,第93行,在get\u object\u或\u 404中
raise Http404('没有%s与给定查询匹配。'%queryset.model.\u meta.object\u name)
django.http.response.Http404:没有与给定查询匹配的KirrURL。
>>>obj=KirrURL.objects.get(shortcode='pric3e')
>>>obj
>>>对象id
1.
>>>obj.url
'http://google.com'

如果您正在使用的网站推荐了选项2,您需要立即查找其他教程。如果你正在使用的网站推荐了选项2,你需要马上找到另一个教程。我的意思是,当我输入同一个shortcode参数时,第一个方法失败了,这个参数肯定是在我的数据库中构建的,第二个很好。我不知道为什么。我认为它应该得到相同的结果。或者我应该给你一些额外的代码让你检查吗?我的意思是,当我在数据库中输入相同的shortcode参数时,第一个方法失败,第二个很好。我不知道为什么。我认为它应该得到相同的结果。或者我应该给你一些额外的代码让你检查吗?我现在在shell中再次运行了它。我可以在get\u object\u或\u 404不断失败时使用get方法得到确切的结果……我现在在shell中再次运行了它。我可以在获取\u对象\u或\u 404一直失败。。。。。。