Как отправить форму в HTML в Django - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь отправить форму в html, используя django.это форма

from django import forms

class contactForm(forms.Form):
name = forms.CharField(required=False, max_length=100,help_text='100 characters max.')
email = forms.EmailField(required=True)
comment = forms.CharField(required=True, widget=forms.Textarea)

Файл представления -

from django.shortcuts import render

from .forms import contactForm
# Create your views here.
 def contact(request):
   form = contactForm(request.POST or None)

   if form.is_valid():
    print (request.POST)
    context = locals()
    template = 'contact.html'
    return render(request, template, context)

, а HTML-файл с правильным именем -

  {% extends 'base.html' %}

  {% block content %}
  <h1> Contact </h1>

   <form method='POST' action=''> {% csrf_token %}
    {{ form.as_p }}
    <input type='submit' value='submit form' class='btn btn-default'  />
   </form>
   {% endblock %}

Когда вы посещаете страницуединственное, что появляется, это тег h1, как мне это исправить?

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Правильный формат рендеринга from:

from django.shortcuts import reverse
from django.http import HttpResponseRedirect
from . import models
from . import forms

def contact(request):

    if request.POST == 'POST':

        form = forms.contactForm(request.POST or None)
        contact_model = models.contactModel() #err is here name it with appropriate model name contactModel is just an example

        if form.is_valid():
            contact_model.name = form.cleaned_data['name']
            contact_model.email = form.cleaned_data['email']
            contact_model.comment = form.cleaned_data['comment']
            contact_model.save()
            return HttpResponseRedirect('/success/')) #desired url to redirect, you can use reverse to call templates according to url names

    else: #if request is GET
        form = forms.contactForm()

     context = {
        'form': form
     }

     template = 'contact.html'
    return render(request, template, context=context)

Не используйте действие в своем шаблоне, просто установите urls.py для перенаправления на нужный вид.

0 голосов
/ 14 декабря 2018

Можно попробовать

def contact(request):
   form = contactForm(request.POST or None)

   if form.is_valid():
      print (request.POST)
      context = locals()
      template = 'contact.html'
      return render(request, template, context)

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