AgeofCreations
@AgeofCreations
Hardware, SEO.

Как отрендерить переменную в Form Field в Django 2.1.7?

Я начниающий джангист, использую Django 2.7.1 и Python 3.7.2. Пытаюсь сделать штуку, которая будет получать данные из Form Fields на сайте и обрабатывать их, а потом выводить результат в другой Form Field на той же странице.
Я пытался решить всё это дело через методы моделей, но так и не понял как ими пользоваться, так что решил попробовать написать функции во views.py.
Также в процессе поисков познакомился с celery и прочими аналогичными асинхронными решениями, но как оказалось мне это не поможет, потому что я не понимаю самой сути.

В общем, теперь кажется я начинаю понимать, но совершенно не врубаю как отрендерить результат по нажатию кнопки с POST-запросом.

Код приведён ниже.

Это models.py
from django.db import models

# Create your models here.

class CombinatorCols(models.Model):
	first_column = models.TextField("Column 1", null=True, blank=True)
	second_column = models.TextField("Column 2", null=True, blank=True)
	third_column = models.TextField("Column 3", null=True, blank=True)
	fourth_column = models.TextField("Column 4", null=True, blank=True)
	result = models.TextField("Result", help_text='Halo', blank=True,)
	def __str__(self):
		return self.first_column


Это мой forms.py
from django import forms
from .models import CombinatorCols

class CombinatorForm(forms.ModelForm):
    class Meta:
        model = CombinatorCols
        fields = ('first_column', 'second_column', 'third_column','fourth_column', 'result',)


Это мой views.py
from django.shortcuts import render, redirect
from django.http import HttpResponse
from django.template import loader
from .models import Combinate,CombinatorCols
from .forms import CombinatorForm,ResultForm
# Create your views here.


def get_col(request):
	#column = get_object_or_404(CombinatorCols)
	if request.method == "POST":
		form = CombinatorForm(request.POST)
		if form.is_valid():
			column = form.save()
			column.sender = request.user
			first_handle = [i for i in column.first_column.split('\n') if i]
			second_handle = column.second_column
			third_handle = column.third_column
			fourth_handle = column.fourth_column
			column.result = first_handle
			column.save()
			print(first_handle)
			print('Naiiiceee')

	else:
		form = CombinatorForm()

	return render(request, 'index.html', {'form': form})

И, в конце концов, мой index.html:

<form action="" method="post">
	{% csrf_token %}
	{{ form.as_table }}
	<input type="submit" value="Submit">
</form>


Я ожидаю что поле 'results' на сайте обновится после нажатия кнопки и в него запишется значение self_handle из views.py, но этого не происходит. print выводятся корректно.
  • Вопрос задан
  • 93 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы