gpt4 book ai didi

python - Django 从浏览器发布 URL

转载 作者:太空宇宙 更新时间:2023-11-03 18:49:39 25 4
gpt4 key购买 nike

我正在浏览 Django 教程,我想弄清楚如何从浏览器将更改发布到模型。这是网址:

 url(r'^(?P<person_id>\d+)/updatePerson/$', views.updatePerson, name='updatePerson')                       
)

这是 View :

def updatePerson(request, person_id):
p = get_object_or_404(Person, pk=person_id)
# try:
# user = p.get(pk=request.POST['name'])
# except (KeyError, Person.DoesNotExist):
# Redisplay the poll voting form.
# return render(request, 'maps/detail.html', {
# 'person': p,
# 'error_message': "This person does not exist",
# })
#else:
p.lat = request.POST['lat']
p.lon = request.POST['lon']
p.task = request.POST['task']
p.save()
# Always return an HttpResponseRedirect after successfully dealing
# with POST data. This prevents data from being posted twice if a
# user hits the Back button.
return HttpResponseRedirect(reverse('maps:detail', args=(p.id,)))

我尝试的网址是:

<serveraddress>/maps/1/updatePerson/?lat=20&lon=20&task=hangOut

我收到此错误:

    MultiValueDictKeyError at /maps/1/updatePerson/
"Key 'lat' not found in <QueryDict: {}>"
Request Method: GET
Request URL: <serveraddress>/maps/1/updatePerson/?lat=20
Django Version: 1.5.2
Exception Type: MultiValueDictKeyError
Exception Value:
"Key 'lat' not found in <QueryDict: {}>"
Exception Location: D:\Python\lib\site-packages\django\utils\datastructures.py in __getitem__, line 295
Python Executable: D:\Python\python.exe
Python Version: 2.7.5
Python Path:
['C:\\GXM_LABS\\gxm_maps',
'D:\\Python\\lib\\site-packages\\setuptools-1.1.3-py2.7.egg',
'D:\\Python\\lib\\site-packages\\django_evolution-0.6.9-py2.7.egg',
'D:\\Python\\lib\\site-packages\\south-0.8.2-py2.7.egg',
'C:\\Windows\\system32\\python27.zip',
'D:\\Python\\DLLs',
'D:\\Python\\lib',
'D:\\Python\\lib\\plat-win',
'D:\\Python\\lib\\lib-tk',
'D:\\Python',
'D:\\Python\\lib\\site-packages']
Server time: Sat, 7 Sep 2013 16:42:14 -0400

我应该在我的网址定义中使用正则表达式来捕获这些值吗?或者我处理这个问题的方式不正确?我正在按照教程进行工作,但会修改它们以适应我兼职做的一些工作。我真的不想要用户输入的表单,因为从长远来看,我将从远程位置(智能手机)发布这些数据,因此真正能够提交这些数据的网页对我来说没有那么有趣能够直接发布这些更改。

最佳答案

您应该从 request.GET 而不是 request.POST 读取查询参数,因为您正在发出 GET 请求(请参阅请求方法:GET 在您的错误页面上)。

仅供引用,还有request.REQUEST可用字典:

For convenience, a dictionary-like object that searches POST first, then GET. Inspired by PHP’s $_REQUEST.

但是,使用它并不是一个好的做法。最好明确一点。

关于python - Django 从浏览器发布 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18677791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com