我正在传递并尝试在我的add表单中使用site\u id。我想用url中的站点ID预填充和隐藏站点数据字段。然后使用该变量向上下文传递更多信息。你知道吗
我的CBV是这样的:
class AddSubnet(CreateView):
model = SiteSubnets
template_name = "sites/edit_subnet.html"
fields = ['device_data', 'site_data', 'subnet', 'subnet_type', 'circuit', 'vlan_id', 'peer_desc']
site_id = self.kwargs['site_id']
site = get_object_or_404(SiteData, pk=site_id)
@method_decorator(user_passes_test(lambda u: u.has_perm('config.add_subnet')))
def dispatch(self, *args, **kwargs):
return super(AddSubnet, self).dispatch(*args, **kwargs)
def get_success_url(self, **kwargs):
return reverse_lazy("sites:site_detail_subnets", args = (site_id,))
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['SiteID']=site_id
context['SiteName']=site.location
context['active_subnets']='class="active"'
#
return context
目前产生的结果是:
File "/itapp/itapp/sites/urls.py", line 2, in <module>
from . import views
File "/itapp/itapp/sites/views.py", line 984, in <module>
class AddSubnet(CreateView):
File "/itapp/itapp/sites/views.py", line 988, in AddSubnet
site_id = self.kwargs['site_id']
NameError: name 'self' is not defined
编辑:
url就是这样的
url(r'^site/add_subnet/(?P<site_id>[0-9]+)$', views.AddSubnet.as_view(), name='add_subnet'),
您编写的语法无效。从代码中删除以下两行
用方法
get_context_data
写在类定义中不能像这样访问
self
。此代码在加载模块时运行。还没有请求,因此self.kwargs
不存在。你知道吗您可以将代码移到dispatch方法中:
然后在其他方法中使用
self.site_id
和self.site
。你知道吗相关问题 更多 >
编程相关推荐