Шаблон Django не отображает вводимые данные - PullRequest
0 голосов
/ 03 ноября 2019

Мне нужно вызвать форму в шаблоне HTML, где пользователь публикует данные, которые сохраняются в модели. Код выполняется без ошибок, но на html-странице отображаются только заголовок и кнопка. Нет полей для ввода текста

У меня естьформа, которая должна отображаться на html-странице, чтобы пользователь мог вводить данные и сохранять данные в модель. Я не получаю никаких ошибок при выполнении этого кода, но шаблон не отображает форму, он просто показывает заголовок икнопка отправки

def boqmodel1(request):
form = boqform(request.POST)
if form.is_valid():
    obj=form.save(commit=False)
    obj.save()
    context = {'form': form}
    return render(request, 'create.html', context)
else:
    context = {'error': 'The post has been successfully created. 

Пожалуйста, введите boq '} return render (запрос,' create.html ', контекст)

MyTemplate

<form action="" method="POST">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Create boq"/>
</form>

МОЙ URL

urlpatterns = [
url(r'^create/', views.boqmodel1, name='boqmodel1'),
path('', views.boq, name='boq'),
]

1 Ответ

0 голосов
/ 03 ноября 2019

Прежде всего, ваш первый запрос, без отправки формы - GET. Когда вы отправляете форму, вы отправляете POST.

Форма не отображается, потому что ваша форма изначально недействительна. Ваша функция должна выглядеть следующим образом:

def boqmodel1(request):
    context = {}

    if request.method == "GET":
        form = boqform()
        context["form"] = form

    # if you post a form do all the saving 
    if request.method == "POST":

        form = boqform(request.POST)
        context = {'form': form}
        if form.is_valid():
            obj=form.save()

            return render(request, 'create.html', context)
        else:
            context["errors"] = form.errors

    return render(request, 'create.html', context)

Если метод GET, инициализируйте вашу форму и передайте ее в свой контекст, чтобы вы могли отобразить ее в веб-интерфейсе. Если метод POST, запустите вашу форму с данными из внешнего интерфейса (request.POST), проверьте правильность формы. Если он действителен - сохраните его. Если оно недействительно, верните свои ошибки и отобразите их, как хотите.

...