单击 table 中的按钮并重定向到同一页面
Click button in table and redirect to same page
我有一个看法:
class ProductList(SingleTableView):
model = Product
template_name = "app/product_list.html"
table_class = ProductTable
每一行都有一个按钮应该执行 function()
:
class ButtonColumn(tables2.Column):
empty_values = list()
def render(self, value, record):
return mark_safe(f"""<a href="/link/{record.id}/"><button class="btn btn-info">link</button></a>""")
这个 ButtonColumn
提供了一个按钮,点击后:
path("link/<int:pk>", views.LinkView.as_view(), name="link"),
以及对应的视图:
class LinkView(TemplateView):
model = Product
template_name = "app/product_list.html"
def get_success_url(self):
return reverse_lazy('product-list')
def get_context_data(self, **kwargs):
context = super(LinkView, self).get_context_data(**kwargs)
function[kwargs] # <------------------
context["table"] = Product.objects.all()
return(context)
我的问题是 Linkview - 我希望它执行 function
一些 URL 传输参数和 return 到前一页 (app/product_list.html
)。我怎样才能做到这一点?
像这样修改ButtonColumn
class ButtonColumn(tables2.Column):
empty_values = list()
def render(self, value, record):
return mark_safe(f"""<a href="/link/{record.id}/?price=10"><button class="btn btn-info">link</button></a>""")
# There is no need to mention these query parameter in path.
路径将保持不变。 无需更改任何内容。
path("link/<int:pk>", views.LinkView.as_view(), name="link"),
在你ListView
中,你会使用self.request.GET.get("param1", "")
,其中param1
是URL传输的参数,""
是默认值。
def get_context_data(self, **kwargs):
context = super(LinkView, self).get_context_data(**kwargs)
param1 = self.request.GET.get("param1", "")
# OR
function(self.request.GET) # extract required params in the function
function[kwargs] # <------------------
context["table"] = Product.objects.all()
return(context)
注:Get是字典
重定向,
from django.shortcuts import redirects
# In your LinkView override get method
class LinkView(TemplateView):
def get(self, request, *args, **kwargs)
return redirect('some/url')
我有一个看法:
class ProductList(SingleTableView):
model = Product
template_name = "app/product_list.html"
table_class = ProductTable
每一行都有一个按钮应该执行 function()
:
class ButtonColumn(tables2.Column):
empty_values = list()
def render(self, value, record):
return mark_safe(f"""<a href="/link/{record.id}/"><button class="btn btn-info">link</button></a>""")
这个 ButtonColumn
提供了一个按钮,点击后:
path("link/<int:pk>", views.LinkView.as_view(), name="link"),
以及对应的视图:
class LinkView(TemplateView):
model = Product
template_name = "app/product_list.html"
def get_success_url(self):
return reverse_lazy('product-list')
def get_context_data(self, **kwargs):
context = super(LinkView, self).get_context_data(**kwargs)
function[kwargs] # <------------------
context["table"] = Product.objects.all()
return(context)
我的问题是 Linkview - 我希望它执行 function
一些 URL 传输参数和 return 到前一页 (app/product_list.html
)。我怎样才能做到这一点?
像这样修改ButtonColumn
class ButtonColumn(tables2.Column):
empty_values = list()
def render(self, value, record):
return mark_safe(f"""<a href="/link/{record.id}/?price=10"><button class="btn btn-info">link</button></a>""")
# There is no need to mention these query parameter in path.
路径将保持不变。 无需更改任何内容。
path("link/<int:pk>", views.LinkView.as_view(), name="link"),
在你ListView
中,你会使用self.request.GET.get("param1", "")
,其中param1
是URL传输的参数,""
是默认值。
def get_context_data(self, **kwargs):
context = super(LinkView, self).get_context_data(**kwargs)
param1 = self.request.GET.get("param1", "")
# OR
function(self.request.GET) # extract required params in the function
function[kwargs] # <------------------
context["table"] = Product.objects.all()
return(context)
注:Get是字典
重定向,
from django.shortcuts import redirects
# In your LinkView override get method
class LinkView(TemplateView):
def get(self, request, *args, **kwargs)
return redirect('some/url')