[英]Django: Passing string parameters to class-based view not working
我嘗試按照此建議將字符串參數傳遞給基於類的視圖,但它似乎不起作用。
網址:
url(r'^chart/(?P<chart_name>\w+)/$',
ChartView.as_view(chart_name='chart_name'), name="chart_url"),
風景:
class ChartView(View):
template_name = "chart.html"
chart_name = None
def post(self, request, *args, **kwargs):
form = DatesForm(request.POST)
context = {
'form': form
}
return render(request, self.template_name, context)
def get(self, request, *args, **kwargs):
print("test")
form = DatesForm()
# fetch plot data (default values used)
context = {
'form': form,
'chart_name': self.chart_name
}
return render(request, self.template_name, context)
應該重定向到視圖的鏈接:
<a href="{% url 'chartboard:chart_url' chart_name='lords' %}">Sometext</a>
(項目的urlconf中給出的命名空間“ chartboard”)。
錯誤:
NoReverseMatch at /chart/lords/
Reverse for 'chart_url' with arguments '()' and keyword arguments '{}' not found. 1 pattern(s) tried: ['chart/(?P<chart_name>\\w+)/$']
出於什么目的,“測試”兩次打印到控制台輸出中(為什么?)
在Ubuntu 14.04.04上使用Django 1.8.11和python 3.4.3
您應該使用kwargs
訪問chart_name
:
# urls.py
url(r'^chart/(?P<chart_name>\w+)/$',
ChartView.as_view(), name="chart_url"),
# and then in the view
class ChartView(View):
template_name = "chart.html"
def get(self, request, *args, **kwargs):
form = DatesForm()
context = {
'form': form,
'chart_name': kwargs['chart_name'] # here you access the chart_name
}
return render(request, self.template_name, context)
您考慮實現此目的的職位是確保變量在模板中可用,並通過在傳遞給模板渲染器的context
中對其進行設置來解決該問題。
您在此處面臨的問題是訪問url模式中定義的named group
。
這是有關當您嘗試訪問URL時django如何處理請求的更多文檔 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.