[英]Django form invalid before rendering with a context processor
我對使用 Django 的表單有一點小問題。 在我的網站上,我在 base.html 中的每個頁面上都有一個“設置”框(使用“包含”渲染) - 每個設置框都有一個表單,我使用“上下文處理器”渲染該表單,但是在模板中渲染表單時什么都沒有顯示。 使用{{global_rebase_form.get_context}}
渲染我收到以下消息:
{'form': <global_rebase_form bound=False, valid=False, fields=()>, 'fields': [], 'hidden_fields': [], 'errors': []}
提示無效? 我的代碼如下
設置.py
'OPTIONS': {
'context_processors': [
'apps.home.views.global_rebase_context',
...
],
上下文處理器:
def global_rebase_context(request):
form = global_rebase_form()
return {
'global_rebase_form': form
}
模板
<form method="POST" name="time" id="rebase-form">
{% csrf_token %}
{{global_rebase_form.as_p}}
</form>
表格.py
class global_rebase_form(forms.Form):
class Meta:
model = profile
fields = ['location_rebase', 'time_rebase']
這意味着如果您使用form.is_valid()
它將返回False
,這是因為表單是無界的。 有界意味着您將數據傳遞給它。 所以一個表格:
global_rebase_form(request.POST, request.FILES) # bounded
是有界的,而沒有數據的形式:
global_rebase_form() # not bounded and thus not valid
是無界的,因此無效。 但是在這里你每次都構造一個空表單。 只有當用戶提交數據時,您才會用數據構造一個新的表單對象,然后對其進行驗證。
因此這不是問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.