Django 将输入数据从 HTML 文件传递​​到 python 脚本,然后将最终数据发送到另一个 HTML 文件

Posted

技术标签:

【中文标题】Django 将输入数据从 HTML 文件传递​​到 python 脚本,然后将最终数据发送到另一个 HTML 文件【英文标题】:Django pass input data from an HTML file to a python script and then send the final data to another HTML file 【发布时间】:2021-09-04 08:30:04 【问题描述】:

我正在尝试在 Django 中构建一个简单的字典。 在 home.html 文件中有一个表单,它要求用户输入一个单词。 这个词应该在 Python 脚本中“成为一个变量”,它需要它从 API 中检索某些数据。

import json
import urllib.request

url = 'https://api.dictionaryapi.dev/api/v2/entries/en_US/' + user_input

response = urllib.request.urlopen(url)
result = json.loads(response.read())

final_word = str(result[0]['word']) + ' \n\n'

final_def = str(result[0]['meanings'][0]['definitions'][0]['definition']))

'user_input' 将是存储输入的变量

然后它应该将从 API 获得的数据(在本例中为 final_wordfinal_def 传递给另一个 HTML 文件 final.html

我不知道该怎么做。任何帮助表示赞赏。如果我需要添加一些代码,请发表评论。原谅我的英语不好。

【问题讨论】:

【参考方案1】:

因此,如果您尝试在视图中执行此操作。假设你有两个模板

from django.shortcuts import render 
import urllib.request
import json

def home(request): # your view name
    if request.POST:
        url = 'https://api.dictionaryapi.dev/api/v2/entries/en_US/' + request.POST['user_input']
        response = urllib.request.urlopen(url)
        result = json.loads(response.read())
        context = 'word':result[0]['word'], 'meanings':result[0]['meanings']
        return render(request, 'output.html', context)
    return render(request,'input.html')

这是一个快速使用的 html 模板input.html

<html>
    <form action="#" method="post">
        % csrf_token %
        <input type="text" name="user_input">
        <button>Go</button>
    </form>
</html>

以及测试输出output.html

<html>
    <p>word: word</p>
    <p>meaning:  meanings </p>
</html>

【讨论】:

成功了!我只需要进行一些更改以使其输出我想要的内容:DI 删除了视图文件中的第二个返回 `
` 我用 /result/ 目录替换了 #在 'context' 中用 'definition' 替换 'meanings' (像这样 `'definition':result[0]['meanings'][0]['definitions'][0]['definition']`)非常感谢很多

以上是关于Django 将输入数据从 HTML 文件传递​​到 python 脚本,然后将最终数据发送到另一个 HTML 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据从 django 传递到引导模式?

Django - 将变量从函数视图传递到 html 模板

无法将参数从模板传递到 Django 视图

从django模板提交通过POST传递其他数据

如何使用web3.py将参数从Django视图传递给契约函数

Django:不能将变量传递给包含的模板?