使用cookiecutter django在django模板中创建2个表单

使用cookiecutter django在django模板中创建2个表单,django,django-forms,django-views,cookiecutter-django,Django,Django Forms,Django Views,Cookiecutter Django,我在cookiecutter django的一个模板上创建了两个表单。我在一个普通的django项目中使用了这两个表单,但是当我将它们迁移到cookiecutter django时,这些表单在用户详细信息模板中不起作用 这是forms.py class NarrateForm(ModelForm): class Meta: model = Narrate fields = [ 'title', 'body',

我在cookiecutter django的一个模板上创建了两个表单。我在一个普通的django项目中使用了这两个表单,但是当我将它们迁移到cookiecutter django时,这些表单在用户详细信息模板中不起作用

这是forms.py

class NarrateForm(ModelForm):
    class Meta:
        model = Narrate
        fields = [
            'title',
            'body',
        ]
        exclude = ('status',)


class TranslateForm(ModelForm):
    class Meta:
        model = Translate
        fields = [
            'title',
            'body',
        ]
        exclude = ('status',)
以下是我拥有的表单的views.py:

class TranslateFormView(FormView):
    form_class = TranslateForm
    template_name = 'user_detail.html'

    def post(self, request, *args, **kwargs):
        add_translation = self.form_class(request.POST)
        add_narration = NarrateForm()
        if add_translation.is_valid():
            add_translation.save()
            return self.render_to_response(
                self.get_context_data(
                    success=True
                )
            )
        else:
            return self.render_to_response(
                self.get_context_data(
                    add_translation=add_translation,
                )
            )

class NarrateFormView(FormView):
    form_class = NarrateForm
    template_name = 'users/user_detail.html'

    def post(self, request, *args, **kwargs):
        add_narration = self.form_class(request.POST)
        add_translation = TranslateForm()
        if add_narration.is_valid():
            add_narration.save()
            return self.render_to_response(
                self.get_context_data(
                    success=True
                )
            )
        else:
            return self.render_to_response(
                self.get_context_data(
                    add_narration=add_narration,
                )
            )
现在,这是来自cookiecutter django的用户_详细信息视图

class UserDetailView(LoginRequiredMixin, DetailView):

    model = User
    slug_field = "username"
    slug_url_kwarg = "username"


user_detail_view = UserDetailView.as_view()
这是用于旧django项目的模板上的代码

<form method="POST" action="#">
    {% csrf_token %}
    {{ add_narration }}
    <button type="submit" name="submit" value="Send Narration">Submit Narration</button>
</form>

<form method="POST" action="#">
    {% csrf_token %}
    {{ add_translation }}
    <button type="submit" name="submit" value="Send Narration">Submit Narration</button>
</form>

{%csrf_令牌%}
{{add_description}}
提交叙述
{%csrf_令牌%}
{{add_translation}}
提交叙述

我已经尝试了两个多小时,但没有成功。

一个可能的解决方案可能是在forms.py文件中创建一个基本表单(extend django.forms.form),然后在views.py文件中手动创建字段和modela。

一个可能的解决方案可能是创建一个基本表单(extend django.forms.forms)在forms.py文件中,稍后在views.py文件中手动创建字段和modela。

为提交输入指定不同的名称,如下所示

<form method="POST" action="#">
    {% csrf_token %}
    {{ add_narration }}
    <button type="submit" name="narrationsubmit" value="Send Narration">Submit Narration</button>
</form>

<form method="POST" action="#">
    {% csrf_token %}
    {{ add_translation }}
    <button type="submit" name="transaltionsubmit" value="Send Narration">Submit Narration</button>
</form>

注意:这是用于基于函数的视图。将其格式化为CBV

为提交输入指定不同的名称,如下所示

<form method="POST" action="#">
    {% csrf_token %}
    {{ add_narration }}
    <button type="submit" name="narrationsubmit" value="Send Narration">Submit Narration</button>
</form>

<form method="POST" action="#">
    {% csrf_token %}
    {{ add_translation }}
    <button type="submit" name="transaltionsubmit" value="Send Narration">Submit Narration</button>
</form>

注意:这是用于基于函数的视图。为CBV设置格式

Hmmm我明白了。我可以在UserDetailView中包含这两个表单吗,因为这是我想要这两个表单的视图?是的,您可以在UserDetailViee.get_context_data()中初始化它们,并将它们与Hmmm一起输出。我可以在UserDetailView中包含这两个表单吗,因为这是我想要这两个表单的视图?是的,您可以在UserDetailViee.get_context_data()中初始化它们,并在一个