6
votes

Django: Formulaire de remplissage d'obtenir la méthode

formulaire: xxx pré>

affichage p> xxx pré>

Après avoir soumis le formulaire, j'essaie de récupérer ses valeurs dans le formulaire P >

 form = SearchJobForm(request.GET)


6 commentaires

Il n'y a que deux champs là-bas, mais vous dites que "certains champs disparaissent". Quels champs de la forme ne sont pas peuplés? Comment vérifiez-vous que le formulaire est-il peuplé?


Vous pouvez envisager de commencer en soumettant le formulaire dans un message et modifiez le code à demander.post. Si cela ne fonctionne pas, vous pouvez regarder ailleurs pour le problème.


Seul le bouton Soumettre apparaît - les 2 autres champs ne montrent pas (les champs eux-mêmes). Je ne peux pas utiliser post parce que j'ai une pagination et je ne sais pas comment paginer avec la poste.


demande.post et request.get sont [QueryDicts] [1], donc soit fonctionner. Êtes-vous sûr que les paramètres de la demande sont dans la demande.Get? Si vous Imprimer demande.get en haut des vues.py Il montre le contenu là-bas? [1]: docs.djangoproject.com/fr/dev / ref / demande-réponse / ...


Oui, je peux voir les contenus. Pour exmaple pour? Query = D & Tys = 1 Je reçois QueryDict: {U'Query ': [U'd'], U'Types ': [U'1']} mais les champs ne s'affichent pas (


S'il vous plaît poster le code complet de votre vue.


4 Réponses :


0
votes

Les objets de formulaire doivent descendre de django.forms.form : xxx


2 commentaires

Le problème est ailleurs.


Veuillez éditer votre question pour refléter cela. Et voyez mon commentaire à votre question: Qu'est-ce qui ne peut pas être renseigné dans le formulaire et comment vérifiez-vous que les données ont été remplies?



2
votes

En fait, pourriez-vous publier toute votre méthode de vue? Je viens de le tester et faire

formulaire = SearchJOBform (request.get) code> p>

fonctionne bien. Il doit être un problème au code de l'environnement ... p>


à partir de votre code, je pense que vous attendez que les valeurs de formulaire rendent en HTML avec les valeurs peuplées ... est-ce comment vous tentent de vérifier que l'objet de formulaire a été rempli? Cela ne fonctionnera pas (et n'est probablement pas ce que vous voulez faire de toute façon - vous voulez traiter les valeurs de formulaire). P>

Essayez d'ajouter ceci à votre vue: P>

def jobs_page(request):
    if 'query' in request.GET:
        form = SearchJobForm(request.GET)
        if form.is_valid():
            print form.cleaned_data['query']
            print form.cleaned_data['types']
        else:
            print form.errors
    else:
        form = SearchJobForm()
    variables = RequestContext(request, {
                                 'form':form,
                                 })
    return render_to_response('jobs_page.html', variables)


0 commentaires

8
votes

On dirait que vous essayez d'afficher une forme pré-peuplée à un utilisateur. Pour ce faire, vous devez transmettre l'argument initial à votre formulaire:

SearchJobForm(initial=request.GET)


2 commentaires

Dans Django 1.9.x n'a travaillé qu'avec SearchJobform (initial = demande.get.get.dict ())


@Jakobovski Voir ma réponse postée pour accommoder les articles de la liste.



1
votes

Les réponses actuellement soumises ne gèrent pas le scénario dans lequel une liste de valeurs est transmise en tant que paramètre d'obtention pour une seule touche. Sous la hotte, Django utilise un multivaluedict Structure de données qui n'a pas de bon moyen d'obtenir des valeurs à partir d'une clé qui a plusieurs valeurs. Le code ci-dessous compense que

def get_initial(self):
    if self.request.method == 'GET':
        initial = {}
        for key, value_list in self.request.GET.lists():
            if len(value_list) <= 1:
                initial[key] = value_list[0]
            else:
                initial[key] = value_list
        return initial
    return super().get_initial()


0 commentaires