Представления на основе классов Django: содержимое страницы "GET" исчезает после выполнения запроса "POST"
Я создаю домашнюю страницу, на которой есть динамически обновляемый раздел блогов и раздел калькулятора ИМТ. Изначально страница загружается отлично. Но проблема в том, что когда я рассчитываю ИМТ (POST запрос), страница обновляется, а раздел блогов (GET) исчезает
my urls.py
urlpatterns = [
path('', HomeViews.as_view(), name='home_page'),
my views.py
class HomeViews(ListView, View):
template_name="home_page.html"
def get(self, request, *args, **kwargs):
posts_diet = BlogModel.objects.filter(cat__title='Healthy Diet').order_by('-created_at')[:1]
return render(request, 'home_page.html', {
'posts_diet' : posts_diet,
})
def post(self, request, *args, **kwargs):
if request.method == "POST":
# get input
height_metric = request.POST.get("height-metric")
weight_metric = request.POST.get("weight-metric")
#----bmi Formula-----
if height_metric:
bmi = float(weight_metric) / (float(height_metric)**2)
else:
bmi = 0
return render(request, 'home_page.html', {
'bmi': bmi,
})
my home_page.html
<div>
{% for pst in posts_diet %}
<div>
<img src="uploads/{{ pst.blog_main_image }}" />
<div>
<p>{{ pst.cat | striptags | slice:':50' }}</p>
<p>{{ pst.created_at | date:"M d, Y" |striptags | safe }}</p>
</div>
<div>
<h1>{{ pst.title | striptags | slice:':150' }}</h1>
<button>
</button>
</div>
</div>
</div>
{% endfor %}
мой терминал:
# initial homepage request (everything loads perfectly fine)
[24/Dec/2021 14:34:21] "GET /static/css/dist/styles.css HTTP/1.1" 200 30992
[24/Dec/2021 14:34:21,606] - Broken pipe from ('127.0.0.1', 65275)
# on submitting POST request GET gets executed but GET content is not displayed
[24/Dec/2021 14:34:42] "GET / HTTP/1.1" 200 44233
[24/Dec/2021 14:34:42] "GET /static/css/dist/styles.css HTTP/1.1" 200 30992
[24/Dec/2021 14:35:41] "POST / HTTP/1.1" 200 37434
Я думаю, что смогу избежать этой проблемы, используя AJAX для отправки формы, но это может быть не надежным решением. Пожалуйста, посоветуйте...