Я использовал это представление для поиска word
как:
db
относится к соединению монго (только для ссылки)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/words-<word>', methods=['GET', 'POST'])
def wordsearch(word):
collection_name=word[0].lower()+'_collection'
words=db[collection_name]
data=words.find({'word':word})
return render_template('wordsearch.html',data=data)
В шаблоне index.html
я делал это, чтобы сопоставить этот URL-адрес выше:
<script type="text/javascript">
$(document).ready(function(){
$('#submit').on('click', function() {
var wordvalue = $("#word").val(); //getting word from element ID
window.location.href ="/"+"words-"+wordvalue; //match the URL in view
})
});
</script>
Можно ли это сделать более динамично? Я имею в виду, что это работает только для word
, а не для других вариантов выбора или комбинации вариантов, как показано ниже:
Ввод поиска выглядит так:
word length: ()
word type : ()
word : ()
submit
Теперь API, который у меня есть, соответствует только в том случае, если я отправляю слово, но как я могу написать один API, чтобы он соответствовал всем возможным комбинациям, таким как слово length + word type
, word + word type
(запросы, которые я бы определил самостоятельно)
Что я пробовал:
@app.route('/<n>-letter-words', methods=['GET', 'POST'])
@app.route('/words-<word>', methods=['GET', 'POST'])
def wordsearch(word=None,n=None):
if word:
collection_name=word[0].lower()+'_collection'
words=db[collection_name]
data=words.find({'word':word})
return render_template('wordsearch.html',data=data)
data = 'you are searching with' + n + 'words'
return render_template('lettersearch.html', data=data)
а в шаблонах script
as:
<script type="text/javascript">
$(document).ready(function(){
$('#submit').on('click', function() {
var lettervalue = $("#wordlength").val();
var wordvalue = $("#word").val();
if (lettervalue==''){
window.location.href ="/"+"words-"+wordvalue;
}
else{
window.location.href ="/"+lettervalue+"-letter-words";
}
})
});
</script>
Но смущает, если есть комбинация, например, 6-letter-words-of-verbs
глагол здесь word type
Кроме того, как сопоставить тот же URL-адрес для этих комбинаций из шаблона, как я делал с JQuery, используемым в script
выше?
Это правильный путь? , я думаю, писать все возможные маршруты в представлениях и сопоставлять их из шаблона с условиями в Jquery - плохая идея,
любые справочные / направляющие ссылки приветствуются, TIA
/foo+bar
и/bar+foo
одним и тем же ресурсом? О: нет. Будут ли они давать такие же эффективные результаты? Зависит от используемой поисковой системы, но URI должен быть уникальным. Является ли/search?foo+bar
и/search?bar+foo
одним и тем же ресурсом? О: да. Оба являются поисковым ресурсом, просто предоставлены разные строки запроса. То, что она называется строкой «запроса», должно быть убедительным намеком на предполагаемую цель. Отредактировано для добавления: обратите внимание, что при построении строки запроса не нужно использовать форму. Формы просто облегчают задачу, но ограничивают васkey=value
. - person amcgregor   schedule 01.01.2020/search?bar+foo
, чтобы я мог избежать любыхjquery
, это правильно или я неправильно понял? - person Codenewbie   schedule 01.01.2020