问题描述
在我的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 (将#修改为@)