将模型属性传递给 Django 中的 URL
Posted
技术标签:
【中文标题】将模型属性传递给 Django 中的 URL【英文标题】:passing model attributes to URL in Django 【发布时间】:2021-02-03 11:40:36 【问题描述】:我是 Django 新手。我有一个模型,其中包含 2 个字段,称为 id(作为 pk)和 region。我有一个页面来返回每个 region 中的对象。有 10 个区域,我需要将区域编号传递给 url 以从 db 过滤该区域中检索数据。 这是我的代码:
views.py
def render_pdf_view(request, *args, **kwargs):
pk = kwargs.get('pk') *********here i need to get region from clicked button instead of pk*************
data = MyModel.objects.filter(region=pk)
template_path = 'pdf/Pdf.html'
context = 'data':data
return response
urls.py
path('pdf/<pk>/', render_pdf_view, name='pdf-data') ***I need to pass region instead of pk***
模板
<a href="% url 'application : pdf-data' ? %"> export pdf </a>
我不知道如何将区域从单击按钮传递给查看,然后将其传递给 url。 任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:要将您的区域从模板传递到视图,您可以使用模板执行此操作;
<a href="% url 'application:pdf-data' object.region %"> export pdf </a>
那么URL路径需要指定区域;
path('pdf/<str:region>/', render_pdf_view, name='pdf-data')
然后视图可以使用该值。
def render_pdf_view(request, region, *args, **kwargs):
data = MyModel.objects.filter(region=region)
template_path = 'pdf/Pdf.html'
context = 'data':data
return response
【讨论】:
但是当我想在data = MyModel.objects.filter(region=region)
行中使用区域时,它不知道区域。而且在模板中,我可以从哪里找到对象?因为我有很多与每个区域相关的对象。 @markwalker_
我遇到了这个错误:Reverse for 'pdf-data' with arguments '('',)' not found. 1 pattern(s) tried: ['pdf/(?P<region>[^/]+)/$']
@markwalker_
那么,如果您刚刚复制/粘贴了我的示例,则呈现模板的上下文不包括 object
,因此您需要确保上下文与您所在的区域相符想要传递给那个 URL以上是关于将模型属性传递给 Django 中的 URL的主要内容,如果未能解决你的问题,请参考以下文章