Python 如何在我的django视图中获得下载按钮的价值?

Python 如何在我的django视图中获得下载按钮的价值?,python,django,Python,Django,我的HTML中有一个下载按钮,它在我的系统上有一个对应文件的路径href。当at用户单击下载时,如何将该路径加载到视图中?此外,该值对于每个下载按钮都是唯一的 如果有其他方法可以做到这一点,而不必在href中公开我的系统路径,我更愿意知道这一点。提前谢谢。 现在我有一些HTML看起来像这样。单击时,如何从项.OutputPath中获取信息到我的视图中 <div class="dashboard-2"> <div class="tasks-finished

我的HTML中有一个下载按钮,它在我的系统上有一个对应文件的路径
href
。当at用户单击下载时,如何将该路径加载到视图中?此外,该值对于每个下载按钮都是唯一的

如果有其他方法可以做到这一点,而不必在
href
中公开我的系统路径,我更愿意知道这一点。提前谢谢。

现在我有一些HTML看起来像这样。单击时,如何从
项.OutputPath
中获取信息到我的视图中

 <div class="dashboard-2">   

      <div class="tasks-finished"> 

        <h1>Finished tasks</h1>   

      </div>  

      <div class="tasks-list">   

      <table>  

        <tr> 

            <th>Name</th>  

            <th>Task ID</th> 

            <th>Status</th>   

        </tr>   

        {% for item in query_finished %}  

        <tr>  

            <td>{{ item.TaskNavn }}</td>  

            <td>{{ item.TaskID }}</td>  

            <td><a href="{{ item.OutputPath }}">Download</a>        </tr> 

        {% endfor %}  

    </table> 

  </div> 

    </div> 

完成的任务
名称
任务ID
地位
{查询中的项的%u已完成%}
{{item.TaskNavn}
{{item.TaskID}
{%endfor%}
附加信息:


我需要这个值,因为我正试图将它保存为一个变量,以便使用Nginx为受保护的文件提供服务。

公开系统路径本身是一个坏主意,但将其用作输入参数将带来巨大的安全风险

最好将项目的id传递给下载视图。大概是这样的:

# template
<td><a href="{% url 'item-download' pk=item.pk %}">Download</a></tr> 

# urls.py
path('download/<int:pk>/', views.download_item, name='item-download'),

# views.py
def download_item(request, pk):
    # Make sure to perform any required checks, e.g. item.owner=request.user
    item = get_object_or_404(Item, pk=pk)
    output_path = item.OutputPath
    ...
#模板
#url.py
路径('download/',views.download_item,name='item-download'),
#views.py
def下载项目(请求,主键):
#确保执行任何必需的检查,例如item.owner=request.user
项目=获取对象或404(项目,主键=主键)
输出路径=item.OutputPath
...

公开系统路径本身是个坏主意,但将其用作输入参数将带来巨大的安全风险

最好将项目的id传递给下载视图。大概是这样的:

# template
<td><a href="{% url 'item-download' pk=item.pk %}">Download</a></tr> 

# urls.py
path('download/<int:pk>/', views.download_item, name='item-download'),

# views.py
def download_item(request, pk):
    # Make sure to perform any required checks, e.g. item.owner=request.user
    item = get_object_or_404(Item, pk=pk)
    output_path = item.OutputPath
    ...
#模板
#url.py
路径('download/',views.download_item,name='item-download'),
#views.py
def下载项目(请求,主键):
#确保执行任何必需的检查,例如item.owner=request.user
项目=获取对象或404(项目,主键=主键)
输出路径=item.OutputPath
...

你为什么不创建视图来提供该文件?@seuling你说得对,我应该这样做。问题是,在我问这个问题之前,我不知道怎么做,也不知道这是否可能。你为什么不直接创建视图来提供那个文件呢?@seuling你说得对,我应该这样做。问题是,在我问这个问题之前,我不知道怎么做,也不知道这是否可能。你们肯定是对的,我应该这样做。非常感谢你。想再回答一个问题吗?我对编码相当陌生,所以请原谅我的愚蠢问题。运行代码时,我收到此异常
name'Item'未定义
我的代码无法正常工作,它只会为您指明正确的方向。将
替换为实际的模型类。还要确保从django.shortcuts导入get_object_或_404添加
,谢谢。我知道我必须用我自己的东西来代替它,但不确定是什么。我还导入了404。非常感谢你的帮助!祝你今天过得愉快。你说得很对。我应该这样做。非常感谢你。想再回答一个问题吗?我对编码相当陌生,所以请原谅我的愚蠢问题。运行代码时,我收到此异常
name'Item'未定义
我的代码无法正常工作,它只会为您指明正确的方向。将
替换为实际的模型类。还要确保从django.shortcuts导入get_object_或_404添加
,谢谢。我知道我必须用我自己的东西来代替它,但不确定是什么。我还导入了404。非常感谢你的帮助!祝您有个美好的一天。