0
votes

Pourquoi ma fonction n'imprime rien dans la CLI?

Pour le moment, j'essaie simplement d'obtenir la fonction d'imprimer ce qu'il a trouvé dans la base de données, mais je ne reçois rien dans la CLI lors de la soumission Eywords via une forme qui présente cette URL de fonctions comme une action. XXX

Le formulaire qui appelle la fonction de recherche et capture le mot de recherche clé: xxx

Code d'erreur
  • PIN DE DEBUGGER: 272-267-243 10.240.1.220 - - [25 / Mai / 2019 19:24:14] "POST / RECHERCHE / HTTP / 1.1" 404 -

    Comme le code est maintenant tout ce que j'attends, c'est qu'il doit imprimer des collections de ma base de données qui ont la recherche du mot-clé à l'aide du formulaire.


10 commentaires

obtenez-vous une erreur?


Aucune erreur autre qu'une erreur 404 pour la page Web, j'essaie de rediriger, mais à attendre à la suite de la déclaration d'impression ne fonctionne pas, je ne sais pas actuellement ce que la fonction tire de ma base de données. J'ai ajouté un retour à la fin 'Retour Redirection (URL_FOR ("SearchResults.html"))'. Aussi, voici ma forme d'action en cas d'incitation qui aide à diagnostiquer.


Pouvez-vous publier votre code entier?


Quel client Mongo utilisez-vous?


Erm theres beaucoup comme son projet de site Web de recette que je fais pour un cours. Pour le moment, le seul problème que j'ai essayé d'essayer de mettre en œuvre une barre de recherche utilisant Pymongo pour rechercher la base de données. Dans la question initiale, la route de l'application complète que j'essaie d'écrire et je posterai le formulaire complet ci-dessous où j'essaie de capturer les mots de recherche clés.


Atlas de Mongodb.


" Recherche "Nom =" "Type =" Texte "Classe =" Valider "> < Type de bouton = "Soumettre"> Soumettre


Veuillez poster toutes les données en modifiant votre question


J'ai édité la question principale maintenant


Vous devriez aussi poster le journal des erreurs aussi


3 Réponses :


0
votes

Utilisation de la documentation officielle pour Pymongo Voici un code testé qui pourrait aider.

from flask import Flask
from flask_pymongo import PyMongo
import pymongo

app = Flask(__name__)

app.config["MONGO_DBNAME"] = 'test'
app.config["MONGO_URI"] = "mongodb+srv://<username>:<password>@cluster0-vhd1j.gcp.mongodb.net/test?retryWrites=true"

mongo = PyMongo(app)

# mongo.db.collection.create_index([("name", pymongo.ASCENDING),("text", pymongo.ASCENDING)])
mongo.db.collection.insert_one({"name":"myname","text":"abcd"})
query = { "text": "abcd"}
results = mongo.db.collection.find(query)
for result in results:
  print(result)


3 commentaires

J'ai essayé de le changer à cela, mais cela n'a pas changé le résultat, exactement les mêmes erreurs, etc. Selon docs.mongodb.com/manual/text-search je devrais utiliser $ texte et $ de recherche


Vous devriez faire référence à cette flacon-pymongo.readthedocs.io/fr/Latest


Oh je vois. Mais j'ai essayé de changer la syntaxe sur ce que vous avez suggéré mais n'a rien changé.



0
votes

Vous devez lire les mots clés reçus de la requête postale à l'aide de request.Form ['Recherche'] Comme ci-dessous: xxx

sous la forme, vous devez remplacer xxx

par xxx

EDIT: Je suggère d'utiliser Get Methode à la place de la fonction de recherche, car lorsque le client rafraîchit le navigateur, il lui demande de confirmer la soumission de formulaire. Nous devons donc remplacer: xxx

par xxx

et xxx

par xxx


11 commentaires

Une nouvelle erreur semble similaire. TypeError: L'objet 'Collection' n'est pas appelable. Si vous vouliez appeler la méthode «Assurez-vous» sur un objet «Collection», il échoue car aucune méthode de ce type n'existe.


Désolé mec. Cela devrait fonctionner mongodb.recipes.ensurindex ({"nom": "texte"})


Pymongo Utilisez Create_Index et assurez-vous au lieu de Createindex et d'm'assurez-vous.


API.MONGODB.COM/PYTHON/ Actuelle / API / PYMONGO / ...


Ah je vois merci. On dirait que je me rapproche de toi. Le dernier message d'erreur est 'TypeError: Si aucune direction n'est spécifiée, Key_or_List doit être une instance de liste'. Une idée de celui-ci?


Vous devez utiliser Render_Template (SearchResults.html, "Résultats": résultats)


J'ai donc mis à jour la déclaration de retour pour inclure le mot clé capturé également (également mis à jour ma question originale avec le dernier code ci-dessus) mais je reçois toujours 'TypeError: Si aucune direction n'est spécifiée, Key_or_List doit être une instance de liste' comme une erreur .


Oui. retour rendu_template ('SearchResults.html', recettes = résultats)


Non, c'est la même erreur 'TypeError: Si aucune direction n'est spécifiée, Key_or_List doit être une instance de liste'. J'ai mis à jour ma question initiale avec le code le plus à jour que j'ai maintenant.


Utilisez mongo.db.recipes.create_index ("nom"). Si vous souhaitez créer un index pour plus d'un champ, vous devez ajouter une direction ascendant ou descendante.


S'il vous plaît voir doc: API.MONGODB. com / python / actuel / API / PYMONGO / ...



0
votes

Merci pour vos tentatives de soutien, mais j'ai maintenant corrigé le problème. La raison pour laquelle rien n'était l'impression dans la CLI n'était dû au fait qu'il y ait un problème avec la ligne Create_index. Il y avait un index existant dans cette collection, dont je n'étais pas au courant de ce qui empêchait cette ligne de courir.


0 commentaires