簡體   English   中英

在賦值之前引用的Django'局部變量'form'中需要幫助

[英]Require help in Django 'local variable 'form' referenced before assignment'

我在django有問題。 我已經在我的應用程序中創建了一個表單,可以在其中獲取客戶的詳細信息。 現在,我想創建一個表格,讓我可以編輯表格。 但是,當我轉到/ index / edit_client / 1時遇到一些問題,出現此錯誤。

local variable 'form' referenced before assignment

我不知道出現此錯誤的原因是什么,但是從我的觀察來看,這無濟於事,除非當然還有另一種方法來創建編輯表單來編輯客戶表單。 這里有一些輸出也可能會有所幫助。

# urls.py
    urlpatterns = patterns('',
    (r'^index/$', login_required(direct_to_template), { 'template': 'index.html' }),
    (r'^index/clients/$', client_info),
    (r'^index/clients_details/(?P<id>\d+)/$', clients_details),
    (r'^index/edit_client/(?P<id>\d+)/$', edit_client),
)

# views.py
@login_required 
def edit_client(request, id=1):
    clients_list = Client.objects.filter(pk=id)  
    if request.method == 'POST':
        form = ClientForm(request.POST or None)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/index/clients/')
        else: form = ClientForm()
    return render_to_response('edit_client.html', {'form': form},  context_instance=RequestContext(request))

#edit_client.html
{% extends "base.html" %}

{% block content %}
<font face="verdana,news gothic,arial,heltevica,serif">
    <h3>Edit Client</h3>
</font>
<form method= "POST" action="">
    <font face="verdana,news gothic,arial,heltevica,serif">
    <div id="form">
        <table>
            {{form.as_table}}
        </table>
        <div align="center" STYLE=" margin-right:190px">
            <input type="submit" value="Submit" STYLE="background-color:#E8E8E8; color:#181818 "/>
        </div>
    </div>
</form>
{% endblock %}

這將始終運行:

return render_to_response('edit_client.html', {'form': form}

但是,如果request.method不是POST ,則不會為form分配任何內容。

固定代碼:

@login_required 
def edit_client(request, id=1):
    clients_list = Client.objects.filter(pk=id)  
    form = ClientForm()
    if request.method == 'POST':
       form = ClientForm(request.POST or None)
       if form.is_valid():
           form.save()
           return HttpResponseRedirect('/index/clients/')
    return render_to_response('edit_client.html', {'form': form},  context_instance=RequestContext(request))

在您的edit_client方法中,您可以在響應中傳遞form ,但是,如果該方法不是POST,則不會初始化form

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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