我已经坚持了一段时间。我需要提取租户的当前域名,以用作在此租户架构中上载数据的参数。
由于我观点的结构,我正在努力使这项工作有效。到目前为止,这是我能够做到的
forms.py
class ETL(forms.Form):
Historical = forms.FileField()
Pre_processing = forms.FileField()
Supplier = forms.FileField()
parameters = forms.FileField()
def process_data(self, request ,*args, **kwargs):
url = request.get_full_path()
print(url)
dbschema = remove_www(request.get_host().split(':')[0]).lower()
print(url)
fh = io.TextIOWrapper(self.cleaned_data['Historical'].file)
fpp = io.TextIOWrapper(self.cleaned_data['Pre_processing'].file)
fs = io.TextIOWrapper(self.cleaned_data['Supplier'].file)
fp = io.TextIOWrapper(self.cleaned_data['parameters'].file)
........
和我的view.py
@method_decorator(login_required, name='dispatch')
class Getfiles(LoginRequiredMixin,FormView):
template_name = 'upload.html'
form_class = ETL
success_url = 'Home'
def form_valid(self, form):
form.process_data()
print('data_processed well')
return super().form_valid(form)
使用这种视图格式,我正在努力如何在视图内部传递request.get_hosts()。我该如何解决?
这是获取架构名称的正确方法还是在表单中获取租户架构的更好方法?
更新:
我已经能够修改我的视图,没有错误,它重定向到正确的页面,但是它不处理我的数据。
@method_decorator(login_required, name='dispatch')
class Getfiles(LoginRequiredMixin,FormView):
template_name = 'upload.html'
form_class = ETL
success_url = 'Home'
def gooView(request, form):
if form.is_valid():
url = request.get_full_path()
form.process_data()
#redirect = 'Home'
#return HttpResponseRedirect(redirect)
return super().form_valid(form)
else:
form = ETL()
context = {
'form': form
}
return render(request, 'upload.html', context)
答案 0 :(得分:1)
好吧,要传递request.get_hosts()
,您应该有权访问request
变量。我唯一可以找到的方法是通过self
对象使用基于类的视图。例如,self.request.get_hosts()
。
参考:https://docs.djangoproject.com/en/3.0/topics/class-based-views/generic-editing/
希望对您有帮助!