我想創建一個「添加用戶」功能,它只會增加你從下拉作爲連接選擇的用戶。我使用ModelChoiceField從Django的形式,這樣我可以從下拉我的用戶模型得到的現有用戶。Django表單 - 渲染形式和重定向
forms.py
from django import forms
from django.contrib.auth.models import User
class NetworkForm(forms.Form):
user_id = forms.ModelChoiceField(queryset=User.objects.all(), label='',
widget=forms.Select(attrs={'class': 'all_users'}))
views.py
現在我只是打印形式看到輸出
@login_required
def add_user(request):
form = NetworkForm()
if request.method == 'POST':
form = NetworkForm(request.POST)
if form.is_valid():
print form
return redirect(request.META['HTTP_REFERER'])
errors = form.errors or None
return render(request, 'chat/index.html', {
'form': form,
'errors': errors,
})
的index.html
<div class="row">
<form action="{% url 'chat:add_user' %}" method="post">
{% csrf_token %}
{{ form.as_p }}
<button class="btn btn-warning" value="{{ user_id }}" style="float: left;">Submit</button>
</form>
</div>
urls.py
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^add_user/$', views.add_user, name='add_user'),]
它被當前呈現的方式是:我有我的主索引頁面,在這裏我看不到任何下拉,即
當我點擊提交按鈕,它讓我感動到指數/ ADD_USER,在那裏我得到用戶下拉(帶有警告「這個字段是必須的)和重新提交按鈕。
最後,當我在這個新頁面中選擇一個用戶並點擊提交時,最後打印出最終我想要的表格。
我想要什麼,有索引頁面本身下拉的完整形式,並在我提交表單時保留在那裏。我便會鉤住,以顯示用戶,他們補充說,形式本身下方的用戶(「打印」僅僅是用於調試的目的 - 不是一個好辦法,我雖然聽說過)。 我明白POST請求將不得不去ADD_USER頁面,我也可以把從後面。過去6個小時我嘗試了各種替代方法,但沒有任何工作。爲長期的道歉,儘可能地提供信息。非常感謝你們。你太棒了。
編輯 人員已繪製在索引頁的形式(建議從@法齊爾 - 扎伊德),但問題依然存在,如只有「提交」按鈕,指數出現開始,除非當我點擊提交之後,出現下拉並提交。再次點擊第二次,表單被提交。
編輯-2 我想到:
<form action="{% url 'chat:index' %}" method="post">{% csrf_token %}
{{ form.as_p }}
<button class="btn btn-warning" value="{{ user_id }}" style="float: left;">Submit</button>
</form>
這可能是問題的所在,按照目前的邏輯,除非用戶採取形式的行動,即,點擊按鈕{{form.as_p }}不會出現。然後我想:
{{ form.as_p }}
<form action="{% url 'chat:index' %}" method="post">{% csrf_token %}
<button class="btn btn-warning" value="{{ user_id }}" style="float: left;">Submit</button>
</form>
依然不工作。 POST請求不會發送任何數據(可以理解)。
@ fazil-zaid不確定我是否將答案標記爲答案或您的答案?你的確是一個大指針。你似乎是一個經驗豐富的堆垛機,告訴我什麼是準則。 – Manganese
由於缺乏來自fazil的回覆,我會讓我的答案成爲答案,建議用戶一起看看fazil和我的兩個組合,然後作出最終答案。 – Manganese