我正在创建一个 Django 论坛项目,并且我有一个“设置”应用程序,它可以访问名为设置的表的数据库。
该表设置有verbose_name
、name
和value
列。第一个只是要显示给管理员的名称,第二个是访问设置的名称(并且是表上的主键。)
现在,我有一些设置是布尔值,一些是整数,还有一些是字符串。但是,value
是数据库中的 TEXT 类型,因此 Django 将其作为字符串返回。现在我有这个实现将布尔值转换为 Python 布尔类型:
class SettingsMiddleware:
def process_request(self, request):
request.settings = {}
settings = Setting.objects.all()
for setting in settings:
if setting.value == ("True" or "1"):
setting.value = True
if setting.value == ("False" or "0"):
setting.value = False
request.settings[setting.name] = setting.value
return None
所以我有两个问题:
- 有没有更好的方法来解决这个问题?
- 如何确定字符串是否包含整数?我知道我可以将它转换为一个整数,
int()
如果它是有效的,但我怎么知道它是否有效呢?
显然,关于第二个问题,我将删除当前评估的“或”“1”和“或”“0”位。