Невозможно использовать переменные Python в HTML |Джанго - PullRequest
0 голосов
/ 25 октября 2018

Я использую Django для создания веб-приложения.Я столкнулся с проблемой при попытке использовать переменные из Python в HTML.Переменная не отображается.В приложении много грязного кода, поэтому я воссоздал проблему, включив только соответствующие файлы.

views.py:

from django.shortcuts import render


# Create your views here.
def home(request):
    return render(request, 'main/index.html')

def hello(request):
  if request.method == 'POST':
    fname = request.POST.get('fname', None)
  else:
    fname = "there"
  return render(request, 'main/hello.html')

index.html:

{% extends "base.html" %} {% block content %}
<form action="hello" method="POST">
  {% csrf_token %}
    <input name="fname" placeholder="First Name">
    <input type="submit" value="Submit">
</form>
{% endblock content %}

hello.html

{% extends "base.html" %} {% block content %}
<p>Hello {{fname}}</p>
{% endblock content %}

base.html:

{% load staticfiles %}
<!DOCTYPE html>

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Hello</title>
    <meta charset="UTF-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1"/>
    <link rel="stylesheet" href="{% static "css/style.css" %}">
</head>
<body>
    {% block content %}{% endblock content %}
</body>
</html>

Вот как выглядит страница «привет» (только часть экрана):
html output(says hello but not

Я хочу, чтобы она была в состояниивывести пользовательский ввод.

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Вы можете ссылаться на переменную в шаблоне, только если включите ее в «контекст», который передается в шаблон.Это словарь, связывающий имена переменных со значениями Python, которые они представляют.Обычный способ передать это в шаблон - это третий аргумент метода render.Таким образом, в вашем views.py вы должны изменить последнюю строку на:

return render(request, 'main/hello.html', {"fname": fname})
0 голосов
/ 25 октября 2018

Для отображения fname вам необходимо передать это в функцию рендеринга.Вы не делаете этого в def hello

Вам нужно правильно вернуть аргумент в функцию рендеринга следующим образом:

def hello(request):

    ...

    context = {'fname': fname}
    return render(request, 'pops/index.html', context)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...