我正在处理一个Django项目,我希望用户能够在.py
文件中添加代码。嗯,我有.py
文件,其中包含一些代码,在代码中间我有一些代码行,这些代码为模糊逻辑算法指定了一些规则,如下所示:
...
rule1 = scikit-fuzzy.control.Rule(input1["bad"] & input2["bad"] & input3["bad"] & input4["bad"] & input5["average"], output["poor"])
...
因此,我总共有243
行代码(换句话说,就是规则),就像上面的代码一样,集中在一些代码之间(在它上面,下面是一些其他代码)。现在,我希望管理员能够编辑和更新这些代码行,通过使用表单,我将从管理员那里获取输入(例如:“好”、“坏”、“平均”、“坏”、“好”、“差”),我希望系统创建一个新的代码行,将这些字符串作为输入
如果admin输入:'good', 'bad', 'average', 'bad', 'good', 'poor'
,我希望.py
在243r
行之后有一个新行,如下所示:
rule243 = #
rule244 = scikit-fuzzy.control.Rule(input1["good"] & input2["bad"] & input3["average"] & input4["bad"] & input5["good"], output["poor"]
有人能帮我吗
事实上,这应该是可行的,我有一个解决方案,让我们实现它
小心
让我们把问题分析成更小的问题
大点
较小的点
我们需要设置多个规则,它们是不可数的,这对于数据库模型来说是一个完美的工作
我们将代码视为
Rule
对象。我们将把dictionary键看作RuleKey
对象。我们会把input
或output
看作RuleType
在您的例子中,
input1['good']
与RuleTypeX[RuleKey]相同,其中x是从1开始的整数RuleKey
视为与Rule
的多对多关系,规则可以有许多RuleKey
对象,这些RuleKey
对象可以存在于不同的Rule
对象中李>需要考虑的事情
eval()
,并执行他想要的任何操作。我创建了这个REGEXP来匹配您的代码
花了很多时间lol,在Regexr上测试,这很好地匹配了您的代码,将您的代码粘贴到那里并进行测试以查看,可以随意改进它,这不是这里的主要重点
content
将包含['poor', 'good', 'whatever']
中的任何一个,类型将为0表示Input
,1表示Output
,我的意思是将其大写,因为我们也需要解决caps问题我们有一个函数,在对最终代码求值之前检查它是否有效
不要使用django提供的愚蠢的
RegexValidator
,如果不匹配,它会引发异常,但是如果匹配,它将返回NONE,对我来说没有意义,或者使用它,不管怎样请允许我在这里评论一下我在实现此功能时解决的问题
RuleKey.TYPES
是一个IntegerChoices
类,Django接受属性并大写第一个字母并返回它,您的代码需要input
而不是Input
,幸运的是我们有str.lower()
range
对象以外的对象时,常规for in循环没有计数器,我们将使用enumerate
李>.format()
''.join(GENEXP)
时,您将打印它的延迟版本,即<generator object at 0x214312>
不要试图在一个查询中使用
keys = keys.objects.all()
,您将面临的问题将与foor循环计数器有关不要使用RuleKey.type,这将返回整数,您需要调用django的
get_foo_display
,在本例中,它是get_type_display()
让我们举例说明
我将按照以下格式命名变量,class\u type\u content
让我们循环并过滤
让我们列举一下
现在对于
.all()
部分,如果您尝试迭代.all()
,您会成功,但是,如果您的输入以input1
开始,您的输出将以output2
开始,这是因为两者都在同一个Queryset
对象中现在,将它添加到
admin
页面中,可能作为一个按钮注意您需要导入
re
和所有必需的库,如scikit
,以及models.py
中代码所需的库现在在您的应用程序中,我将我的应用程序命名为
core
,创建templates/admin/core/rule
,格式如下<app_name/templates/admin/app_name/model_name>
所有字母都小写添加名为
change_form.html
的文件加上这个
这创造了发布
execute
的表单,然后我们在模型管理中捕获它,如果它存在,我们执行代码我根据这个主题写了this dev.to article
相关问题 更多 >
编程相关推荐