我有一個用戶需要註冊的APP。表格中的Python燒瓶形式 - 註冊過程的更新部分
我有一個form
對登記數據的用戶名的電子郵件等
在同一進程中用戶註冊的公司,其可具有多個類別。
在我的數據庫我有具有類固定量的一個類別表,可以說500
雖然用戶註冊,他可以選擇多達10個類別爲他的公司。
問題:
我不想顯示500個類別的網頁上。我想有一個輸入字段,用戶可以嘗試搜索適合他的公司的類別。
我的主意:
我創建第二form_category
。我使用這種形式來限制查詢與sqlalchemy %like%
,所以我不必顯示所有500個類別。我限制他們讓說,20個類別,並只顯示相關的人在那裏同樣%的用戶輸入%適用:
searched_categories = session.query(Category).filter(Category.category_name.like('%'+form_category.category_search.data.strip()+'%')).limit(20)
問題
首先,我現在有一個表格的形式。兩種形式都有相同的行爲。而且看起來第一個提交按鈕總是活動的,這意味着我現在只能提交form_category
。
即使我設法解決這個問題,整個頁面都會重新加載,而且我可能會丟失之前所有字段的輸入。
更多的想法:
我可以創造這一個多視圖和已經進入數據存儲在cookie中。我的初始路線是/register
,如果用戶搜索分類,它將變爲/register/<user-input>
,但感覺不對。
我也可以刪除form_category
並嘗試用jQuery做所有事情,但對於使用noscript
的人來說,該網站將無法使用。
不錯的
有沒有一種方式,如果表單提交不是relaod整個頁面,我只想relaod其中顯示類別頁面的部分。
下面是一些代碼:
形式:
class RegisterUserForm(Form):
# infos for user
email = EmailField('Email', validators=[DataRequired(message="Geben Sie eine Email ein"), Email()])
password = PasswordField('Passwort', validators=[DataRequired(message="Geben Sie ein Passwort ein"), EqualTo('confirm_password', message=u'Passwörter stimmen nicht überein'), Length(min=5, message="Passwort muss mindestens 5 Zeichen lang sein")])
confirm_password = PasswordField('Passwort wiederholen')
# infos for company
company_name = TextField('Firmenname', validators=[DataRequired(message=u"Wie heißt Ihre Firma?")])
# infos for category
category_is_merchant = BooleanField(u"Händler")
category_is_distributor = BooleanField(u"Großhändler")
category_is_service = BooleanField("Diensleister")
category_is_manufacturor = BooleanField("Hersteller")
# etc...
class SearchCategoryForm(Form):
category_search = TextField('Nach Branche suchen')
形式在我的神社的html文件的形式(我刪除了不重要的數據):
<form class="col-xs-12" id="register-form" enctype="multipart/form-data" method="POST" action="{{ url_for('register', next=request.args.get('next')) }}">
{{ form.hidden_tag() }}
<div id="content-company-data">
<h2> Firmendaten </h2>
<div class="content">
<!-- some data -->
<form class="col-xs-12" id="search-category-form" enctype="multipart/form-data" method="POST" action="{{ url_for('register', next=request.args.get('next')) }}">
{{ form_category.hidden_tag() }}
<div class="form-group">
{{ form_category.category_search.label }}
{{ form_category.category_search(class = "form-control", placeholder ="Branche") }}
{% if form_category.category_search.data.errors %}
{% for error in form_category.category_search.data.errors %}
<p class="flashes-error-form"> {{ error }}</p>
{% endfor %}
{% endif %}
</div>
<button type="submit" class="btn"> Branche suchen </button>
</form>
<!-- some data -->
<button type="submit" class="btn register-button"> Jetzt Kostenlos Registrieren </button>
</form>
在我的主py我在哪裏提交表格(測試atm。與極限()):
# register site
@app.route('/registrieren', methods=["GET","POST"])
def register():
if current_user.is_authenticated():
return redirect(url_for('logged_in'))
else:
form = RegisterUserForm()
form_category = SearchCategoryForm()
searched_categories = Category.query.order_by(asc("id")).limit(4)
if form_category.validate_on_submit():
print "cat form validates"
searched_categories = Category.query.order_by(asc("id")).limit(2)
return redirect(url_for('register'))
if form.validate_on_submit():
print "user form validates"
#adding data to DB here
return redirect(url_for('unconfirmed'))
return render_template('register.html', form = form, form_category=form_category, searched_categories=searched_categories)
我已經使用JavaScript自動完成功能解決它。 – Roman
這不是一個答案btw。評論應該進入評論部分,否則你會被低估。 – Roman