Django - 使用来自另一个应用程序的表单 - 创建重定向问题

Django - using a form from another app - issue creating a redirect

我的项目中有一个联系人应用程序。要在主页中使用该应用程序的联系表,我在 views.py:

中创建了这个
from django.views import generic
from contact.forms import ContactForm

class HomePage(generic.TemplateView):
    template_name = "home.html"

    def get_context_data(self, *args, **kwargs):
        context=super(HomePage, self).get_context_data(*args, **kwargs)
        context['form'] = ContactForm

        return context

当我在主页上提交表单时,它重定向到一个空白页面,而不是主页或致谢页面。

联系人应用 views.py 中的定义如下:

def contact(request):
    form_class = ContactForm

    if request.method == 'POST':
        form = form_class(data=request.POST)

        if form.is_valid():
            contact_name = request.POST.get('contact_name', '')
            contact_email = request.POST.get('contact_email', '')
            form_content = request.POST.get('content', '')

            template = get_template('contact/contact_template.txt')
            context = dict({'contact_name': contact_name, 'contact_email': contact_email, 'form_content': form_content,})

            content = template.render(context)

            email = EmailMessage(
                "New contact form submission",
                content,
                "Your website" +'',
                ['you@company.com'],
                headers = {'Reply-To': contact_email }
            )
            email.send()
            return render(request, 'contact/thank_you.html')

    return render(request, 'contact/contact.html', {
        'form': form_class,
    })

我注意到填写表格并点击提交并没有像联系人应用程序页面那样输出到控制台,我也没有得到确认页面。我相信这意味着我需要为表单提供这些文件的路径,或者将文件复制到主模板目录,并告诉视图在哪里可以找到它们。作为 Django 的新手——我完全迷路了。我已经创建了创建视图,但现在我正在苦苦挣扎。求助!

如果您想在成功提交表单后重定向到另一个页面,那么您可以使用这是您的视图部分,

    def get_success_url(self):
        return reverse('url-name')

让我知道它是否有效。

action="contact/"action="{% url contact:contact %}" 您在 home.html 和 here 中的表单是 url resovle doc.

您可以通过基于 class 的视图来简化您的代码,例如 FormView or CreateView

from django.views.generic import FormView, CreateView