【问题标题】:How can I access data sent in a post request in Django?如何访问在 Django 的 post 请求中发送的数据?
【发布时间】:2014-01-31 23:47:30
【问题描述】:

我有一个表单应该在 Django 中创建一个新的“报价”记录。 'Quote' 需要 BookID 作为外键。

这是我的表格

<form method="POST" action="{% url 'quotes:createQuote' %}">
    {% csrf_token %}
    <section>
        <label for="q_text">Quote Text</label>
        <input type="text" name="text" id="q_text" placeholder="Enter a Quote" style="padding-left:3px"> <br>

        <label for="q_book">Book ID</label>
        <input type="text" name="bookID" id="q_book" placeholder="Enter Book ID" style="padding-left:3px"> <br>

        <label for="q_disp">Display Quote Now?</label>
        <input type="radio" name="display" id="q_disp" value="True"> True 
        <input type="radio" name="display" value ="False">False <br>
        <button value="submit">Submit</button>
    </section>
</form>

这就是它所针对的方法

def createQuote(request):
    #b = get_object_or_404(Book, pk=request.bookID)
    return HttpResponseRedirect(reverse('quotes:index'))

在那个请求参数的某个地方,我假设有某种字段包含用户将在表单上传递的 bookID。我如何获得这些信息?

如果有人能告诉我一些方法,我可以像在 Javascript 中使用 console.log(some.collection) 那样可视化数据

【问题讨论】:

  • 这在教程中有很好的介绍,并在请求对象的文档中进行了扩展。
  • 你是对的,有一个例子。我以前没有注意到。

标签: django python-2.7 django-templates


【解决方案1】:
if request.method == "POST":
     book_id = request.POST['book_id']

假设你确定它在里面。否则,您需要像普通 python 字典一样验证/提供默认值。

至于可视化数据,你的意思是把它打印到控制台吗?在这种情况下,如果您正在运行 django runserver,您只需执行print some_data。如果你想让它的格式更好一点,你可以使用漂亮的打印:

import pprint
pp = pprint.PrettyPrinter()
pp.pprint(some_data)

【讨论】:

  • 我正在使用 django 运行服务器。我想我误解了一些东西。我真的可以在控制 POST 的文件中写一个打印,比如我的 quotes/views.py 还是我必须使用 manage.py shell 之类的?我从未见过任何打印工作,但这可能是由于重定向清除了控制台。
  • 使用标准运行服务器,print 语句应该直接进入控制台。无论是在请求垃圾邮件中迷失了方向,还是您自定义了一些我不知道的东西。老实说,我倾向于不使用打印语句,要么使用 assert False, some_data 给我一个 django 错误屏幕,其中包含我想要显示的变量,要么使用 pdb
猜你喜欢
  • 2016-04-03
  • 1970-01-01
  • 1970-01-01
  • 2020-10-19
  • 2011-07-15
  • 1970-01-01
  • 1970-01-01
  • 2015-01-05
  • 1970-01-01
相关资源
最近更新 更多