Django: получить текущий URL-путь для использования в форме - PullRequest
0 голосов
/ 20 апреля 2020

Я застрял на этом некоторое время. Мне нужно извлечь текущее доменное имя арендатора, чтобы использовать его в качестве параметра для загрузки данных в этой схеме арендатора.

Я изо всех сил пытаюсь сделать эту работу из-за структуры моего взгляда. Это то, что я смог сделать до сих пор

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)

1 Ответ

1 голос
/ 20 апреля 2020

Ну, чтобы передать request.get_hosts(), вы должны иметь доступ к переменной request. Единственный возможный способ, который я могу найти, - это использовать представление класса на основе объекта self. Например, self.request.get_hosts().

Ссылка: https://docs.djangoproject.com/en/3.0/topics/class-based-views/generic-editing/

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...