【问题标题】:Reference Original Post Data in Django在 Django 中引用原始帖子数据
【发布时间】:2017-08-06 13:23:29
【问题描述】:

我试图弄清楚如何将原始字段数据及其结果发布到我的结果页面。我有一个用 Django 编写的应用程序,它有两个 html 页面。一个输入页面和一个结果页面。输入页面有一个表单。结果页面有输出。这是我的代码:

models.py

class IssuingCA (models.Model):
    ICA_name = models.CharField(max_length=200)
    filepath = models.CharField(max_length=200)
    def __str__(self):
        return self.ICA_name

views.py(简化版)

def index(request):
    issuers = IssuingCA.objects.order_by('ICA_name')
    issuerOptions = {'issuers': issuers}
    return render(request, 'index.html', issuerOptions)

def results(request):
    issuer = request.POST['selectedIssuer']
    issuername = 'Where I want the ICA_name value "icas" displayed'
    info = {'issuer': issuer, 'issuername': issuername}
    return render(request, 'results.html', info)

index.html

--snip--
<label for="selectedIssuers">Issuing CA</label>
    <select id="selectedIssuers" name="selectedIssuers">
    {% for icas in issuers %}
    <option value="{{ icas.filepath }}">{{ icas }}</option>
    {% endfor %}
--snip--

结果.html

--snip--
<div>{{ issuer }}</div>
<div>{{ issuername }}</div>
--snip--

让我们为数据库设置一些示例数据: ICA_Name = "松鼠";文件路径 = "in/some/forest"

应用程序的工作方式是它在 index.html 页面中显示一个下拉列表,其中显示所有值的ICA_name。当您选择ICA_name(在本例中为“松鼠”并提交时,它会将选项的值作为松鼠的filepath 传递-我通过POST 请求的“in/some/forest”并显示在结果页面。我想要的是一种在结果页面上也显示松鼠原始值的方法,例如对于issuer&lt;div&gt; 中的文本显示 squirrels(目前有效)和 @ 987654330@,&lt;div&gt; 中的文字显示in/some/forest

【问题讨论】:

    标签: python django forms python-3.x


    【解决方案1】:

    如果必须手动操作,请将IssuingCA实例的主键放在&lt;option&gt;value=属性中,

    <option value="{{ icas.pk }}">{{ icas }}</option>
    

    然后在结果中取回实例:

    issuing_ca = IssuingCA.objects.get(pk=request.POST['selectedIssuers'])
    info = {'issuer': issuing_ca.filepath, 'issuername': issuing_ca.ICA_name}
    

    但如果您使用的是 Django,您肯定想要使用它的表单。

    这里有一个教程:https://docs.djangoproject.com/en/1.10/intro/tutorial04/

    这里是完整的文档:https://docs.djangoproject.com/en/1.10/topics/forms/

    Django 提供了更好的方法来管理输入数据,可以保护您免受各种陷阱的影响。

    【讨论】:

    • 嗯.. 我从没想过使用 pk 值并引用其中的字段。我也不知道你可以写 {'issuer': issue_ca.filepath}。你教会了我一些新东西!我刚刚对此进行了测试,它可以工作!谢谢!我之前研究过表单,我打算更新我的应用程序以在未来的版本中使用它们。
    • 尽快做,不要等待。即使不是为了安全功能,它也可以节省大量时间,尤其是在维护/扩展已经编写的代码时(这始终是主要的时间槽)。
    猜你喜欢
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 2019-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    相关资源
    最近更新 更多