簡體   English   中英

在使用上下文處理器渲染之前,Django 表單無效

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM