Python 使用GET方法时不接收信息,仅当我不使用';我用不着它

Python 使用GET方法时不接收信息,仅当我不使用';我用不着它,python,django,Python,Django,在我的项目中,我为某个ID显示JSON对话,该ID作为URL中的参数传递 def conversationview(request, convo_identification): data = InputInfo.objects.all() conversation_identification = request.GET.get('convo_identification') #conversation_id = {'conversation_id': []}

在我的项目中,我为某个ID显示JSON对话,该ID作为URL中的参数传递

def conversationview(request, convo_identification):
    data = InputInfo.objects.all()
    conversation_identification = request.GET.get('convo_identification')
    #conversation_id = {'conversation_id': []}
    header = {'conversation_id': '', 'messages': []}
    entry = {}
    output = {}

    for i in data:
        if str(i.conversation_id) == conversation_identification:
            header['conversation_id'] = i.conversation_id
            entry = {}
            entry['sender'] = i.name
            entry['message_body'] = i.message_body
            entry['date_created'] = str(i.created)
            header.get('messages').append(entry)
            output = json.dumps(header)
    return HttpResponse(output) 
url.py

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^message/', sendMessage.as_view(), name='message'),
    url(r'^conversations/(?P<convo_identification>\d+)', views.conversationview, name='conversationview'),
]
urlpatterns=[
url(r“^admin/”,admin.site.url),
url(r“^message/”,sendMessage.as_view(),name='message'),
url(r'^conversations/(?P\d+),views.conversationview,name='conversationview'),
]

conversation\u identification=request.GET.GET('corba\u identification')
不起作用(屏幕上没有显示任何内容),但当我将其更改为
conversation\u identification=corba\u identification
时,它将显示该ID的信息。我没有这方面的任何HTML,因为我不需要它。但是我想知道为什么不能使用request.GET或request.GET.GET()?这有关系吗?通过查看终端,我知道正在发出GET请求

Django正在将conva_identification变量解析为URL参数,而不是请求对象的一部分。当URL.py引用views.py时,该值被设置为参数

当您试图从request.get字典中获取车队标识时,它不存在,因此get方法无法返回任何内容。这不会导致错误,但会自动设置空值

要验证您的请求中没有密钥。获取与车队标识匹配的词典,您可以打印请求的内容。获取词典:

print(request.GET)

此外,由于变量是在视图引用时初始化的,因此实际上不需要重新声明变量,除非您只是更改名称。

您将直接从函数的
范围中获得
车队标识
,访问url参数不需要访问
request
对象。
因此,将行
conversation\u identification=request.GET.GET('corba\u identification')
更改为
conversation\u identification=corba\u identification
将解决您的问题:)

啊,我明白了,那是因为URL没有发出GET请求吗?因为在终端中,它确实会说GETWell…当你加载视图时,你正在发出一个GET请求;但是,您的变量在路径中作为URL参数传递,而不是与其他可能的GET请求(即搜索栏的参数)一起提供的额外数据。如果这让你更加困惑,我很抱歉……不,这并不感谢你的回复。只是我通常通过HTML模板发送请求。但是我不需要HTML来做这个。有人给了我这个挑战,要求“对话/接受HTTP GET操作”。这是否满足了这个要求?我认为最简单的方式就是像POST请求一样:当您向视图提交POST请求时,您必须将其寻址到期望该请求的URL。该URL的一部分可能在其URL路径中有一个变量或URL参数。然而,当你提交一篇文章时,有大量的其他数据没有显示在你的URL中。这是因为它是request.POST字典的一部分。等等,你说我没有从搜索栏参数中获取数据,但是当我在搜索栏中输入某个参数时,我需要的数据会显示出来