使用cookiecutter django在django模板中创建2个表单
我在cookiecutter django的一个模板上创建了两个表单。我在一个普通的django项目中使用了这两个表单,但是当我将它们迁移到cookiecutter django时,这些表单在用户详细信息模板中不起作用 这是forms.py使用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',
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()中初始化它们,并在一个