가장 큰 문제는 템플릿에 .form.as_p
을 사용하여 양식을 생성하는 방법입니다.
.get_form 함수를 사용하여 양식을 생성해야하지만, 현재 사용자 및 페이지가 이와 같이 인수로 있어야하므로 템플리트 내에서 수행하는 것이 가장 좋습니다.
form = feedback_form_page.get_form(
page=feedback_form_page, user=request.user)
당신은 양식이 여기에 AbstractForm 모델 구축하는 방법을 볼 수 있습니다 https://github.com/wagtail/wagtail/blob/master/wagtail/wagtailforms/models.py#L278
전체 상세한 예를 아래에, 당신은 사이트 설정 모듈에 양식 선택을 작업 할 수있는 방법과 함께. http://docs.wagtail.io/en/v1.13/reference/contrib/settings.html
이 문서의 '편집 핸들러'섹션이 페이지에 링크 할 수있는 좋은 방법을 설명합니다 사이트 설정
의 양식에
예 :이 모델을 설정하면
from wagtail.contrib.settings.models import BaseSetting, register_setting
# ...
@register_setting
class MyCustomSettings(BaseSetting):
feedback_form_page = models.ForeignKey(
'wagtailcore.Page', null=True, on_delete=models.SET_NULL)
panels = [
# note the page type declared within the pagechooserpanel
PageChooserPanel('feedback_form_page', ['base.FormPage']),
]
, 당신은 관리자에 작업 할 수있는 변화를 makemigration
및 migrate
을 수행해야합니다. 그런 다음 설정 메뉴 내에서라는 제목의 하위 메뉴를 볼 수 있습니다 '내 사용자 설정'은이에 포함이 모든 페이지
(그래서이 템플릿에서 재정의 할 수 있습니다) 블록을 추가 연결 양식을 추가
당신의 기본 템플릿 (예 : myapp/templates/base.html).
<!-- Footer -->
<footer>
{% block feedback_form %}{% include "includes/feedback_form.html" %}{% endblock feedback_form %}
{% include "includes/footer.html" %}
</footer>
는 포함 템플릿 만들기
{% load feedback_form_tags wagtailcore_tags %}
{% get_feedback_form as feedback_form %}
<form action="{% pageurl feedback_form.page %}" method="POST" role="form">
<h3>{{ feedback_form.page.title}}</h3>
{% csrf_token %}
{{ feedback_form.form.as_p }}
<input type="submit">
</form>
형태로 페이지를 얻을 수있는 템플릿 태그를 구축
템플릿 태그가 필요 (예. myapp와는/템플릿// feedback_form.html 포함) 페이지의 self.get_form() 함수로 양식을 빌드하십시오. 예 :템플릿 태그 (기본/templatetags/feedback_form)
from django import template
from myapp.models import MyCustomSettings
register = template.Library()
# https://docs.djangoproject.com/en/1.9/howto/custom-template-tags/
@register.assignment_tag(takes_context=True)
def get_feedback_form(context):
request = context['request']
my_custom_settings = MyCustomSettings.for_site(request.site)
feedback_form_page = my_custom_settings.feedback_form_page.specific
form = feedback_form_page.get_form(
page=feedback_form_page, user=request.user)
return {'page': feedback_form_page, 'form': form}
감사합니다. –