如何解决Django Python-变量似乎正在被缓存?
在我的Django应用程序中,我获得了Google Cloud Organization中具有以下内容的项目列表:
try:
global projectdicts
projectdicts = cloudresmanv1.projects().list().execute()
projectdicts = projectdicts.get('projects')
except Exception as e:
logging.error(e)
以上内容取自称为ProjectForm的Django形式。 但是,在创建GCP项目并在Django应用中再次浏览到ProjectForm页面之后,该列表不会更新以显示新创建的项目。我的理解是,无论如何,应该再次执行以上操作。
如果我手动运行脚本,当然会更新 projectdicts 变量。因此,这使我相信出于某种原因,Django应用程序或Python正在缓存该变量,而又不想再次运行上面的代码。
这可能是问题吗?如果是这样,我每次浏览到ProjectForm页面时,如何强制Django / Python重新运行脚本的这一部分,以确保GCP项目列表得到更新?
编辑09/09/2020: 这是完整表格,如评论所要求:
class ProjectForm(forms.Form):
client = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Client Name (lowercase)'}),validators=[RegexValidator(r'^[a-z]+$','Enter a valid client name (only lowercase letters)')])
stage = forms.ChoiceField(choices=TYPES)
folder = forms.ChoiceField(choices=FOLDERS,required=False,label='')
purpose = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Project Purpose (lowercase; digit optional)'}),validators=[RegexValidator(r'^[a-z-]+[1-9]?$','Enter a valid purpose (only lowercase letters,with a single optional digit)')])
computeapi = forms.BooleanField(required=True,initial=True,label='Compute Engine')
deploymentmanapi = forms.BooleanField(required=False,label='Deployment Manager')
storagecompapi = forms.BooleanField(required=False,label='Storage Components')
monitorapi = forms.BooleanField(required=False,label='Monitoring')
loggingapi = forms.BooleanField(required=False,label='Logging')
def clean(self):
form_data = super(ProjectForm,self).clean()
projectname = form_data['client'] + "-" + form_data['stage'] + "-" + form_data['purpose']
client = form_data['client']
purpose = form_data['purpose']
for projectdict in projectdicts:
if projectname == projectdict['name']:
raise ValidationError(projectname + " already exists! Please try another name.")
if not re.match("^[a-z-]+[1-9]?$",purpose):
raise ValidationError(purpose + " does not comply with the Regex parameters.")
if not re.match("^[a-z]+$",client):
raise ValidationError(client + " does not comply with the Regex parameters.")
return form_data
def __init__(self,*args,**kwargs):
super().__init__(*args,**kwargs)
self.helper = FormHelper()
self.helper.add_input(Button('back','Back',css_class='button button--wide button--black',onclick="window.location.href = '{}';".format(reverse('home'))))
self.helper.add_input(Submit('next','Next',css_class='button button--wide button--white'))
self.helper.layout = Layout(
Fieldset(
'Project Name',Row(
Column('client',css_class='form-group col-md-4 mb-0'),Column('stage',Column('purpose',)
),Fieldset(
'Folder Name',Row(
Column('folder',css_class='form-group col-md-4 mb-0')
)
),Fieldset(
'APIs To Enable',Row(
Column('computeapi',css_class='form-group col-md-3 mb-0'),Column('deploymentmanapi',Column('storagecompapi',Column('monitorapi',Column('loggingapi',css_class='form-group col-md-3 mb-0')
)
),)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。