Ce formulaire a plusieurs choix à choisir. Cependant, les cases à cocher ne s'affichent pas dans HTML! J'utilise matérialiser CSS. S'il vous plaît aider.
formes.py: p> form.html: p> p> Page HTML dans le navigateur: p> source de vue de navigateur: p> mise à jour: p>
5 Réponses :
matérialiser CSS nécessite des cases à cocher pour être à l'intérieur des éléments d'étiquette et ensuite avec un élément de plage à côté de l'élément d'entrée. Utilisation de Django's {{FORM.AS_P}} CODE> n'inclut pas l'élément de la portée et donne des cases à cocher les cases ne figurant pas correctement. Vous devrez diviser chaque champ sous la forme séparément (A pour la boucle fonctionnera également). {% for field in form %}
<label>
<input type="checkbox">
<span>{{ field.name }}</span>
</label
{% endfor %}
Cela ne fonctionne pas mais j'ai réécrit le code. Le codé mis à jour est dans la question initiale sous "mise à jour". J'ai seulement besoin d'une seule case et il devrait retourner vrai ou faux. Comment allais-je faire ça? Je n'ai aucune idée de la façon de réaliser cela.
Et ce code irait-il entre
Oui. Vous pouvez l'utiliser à l'extérieur si vous voulez / besoin de. Les balises de formulaire n'effectuent pas vraiment le résultat ici.
Le problème fondamental est que Django génère vos options de couleur telles que ceci: .. et bien sûr pour les champs de case à cocher singulier, les sorties Django: p> <form>
{{ form.non_field_errors }}
<p>... student name field here ...</p>
<p>
{{ form.present.errors }}
<label for="{{ form.present.id_for_label }}">
{{ form.present }}
<span>{{ form.present.label }}</span>
</label>
</p>
etc. for all the other fields...
<input type='submit' value='Save' />
</form>
Je ne suis pas tout à fait sûr de la façon dont je voudrais passer à la mise en œuvre. Pourriez-vous s'il vous plaît fournir un exemple? Et j'ai aussi besoin de là pour y avoir une seule case car elle est pour une case à cocher présente / absente. Avez-vous des conseils sur le meilleur moyen de mettre en œuvre cela? Et désolé pour de telles questions stupides et simples! Je suis nouveau à la programmation.
@ Egor.l j'ai mis à jour ma réponse. Lisez la documentation Django que j'ai liée à des détails beaucoup plus.
Si j'ai bien compris votre problème correctement, ci-dessous est ce que je suis confronté et corrigé:
Dans ce scénario, Django rendu des étiquettes avec le puits de CSS: aucune case à cocher, les sélection de radio et les choix déroulants ne sont pas affichés pour Moi. P>
J'ai écrit un simple JavaScript pour résoudre ce problème dans mon modèle: p>
J'ai utilisé des vues basées sur la classe à Django, avec la classe UpdateView. Pour éviter de devoir changer le HTML émis par Django, j'ai ajouté le Après modification (fait avec jQuery) dans le modèle:
{% extends "main.html" %}
{% load static %}
{% block title %}FEI Project Update{% endblock %}
{% block content %}
{# I copied the javascript libraries into the Django static area #}
<script src="{% static 'js/jquery-3.5.1.min.js' %}"></script>
<script src="{% static 'js/materialize.min.js' %}"></script>
<script src="{% static 'js/init.js' %}"></script>
{# these lines modify the html from Django and add the <label> and <span>
statements as described above. Three lines are needed, the ones between
<script> and </script>. Then the table can be rendered with the Django
{{ form }} statement without any other changes. #}
<script>
$(document).ready(function() {
$(':checkbox').wrap('<label class="crutch"> </label>');
$('.crutch').append('<span> </span>');
});
</script>
{# This is the rest of the template for illustration #}
<div class="section no-pad-top" id="index-banner">
<style>
table, th, td {
border: 1px solid black;
border-collapse: collapse;
}
th, td {
text-align: center;
}
label {
pointer-events: auto;
}
</style>
<div class="container">
<h3>FEI Project Update: {{ project_instance.sap_id }}</h3>
<form action="" method="post">
{% csrf_token %}
<table>
{{ form }}
</table>
<input type="submit" value="Submit">
</form>
</div>
</div>
{% endblock %}
J'ai eu le même problème. Si vous utilisez des matériaux frontages, vous pouvez le rendre de cette manière:
{% load material_form %}
...
<form method="get">
{% form form=form %}{% endform %}
<input type="submit" class="btn btn-default" value='send' />
</form>
Il serait beaucoup plus utile de voir le texte HTML réel, plutôt qu'une image du HTML rendu ...
@thebjorn Texte HTML actuel comme dans le code HTML? Le code HTML et le code Python sont au-dessus de la capture d'écran. Si ce n'est pas ce code, que voulez-vous dire par «texte HTML»?
Ce que vous avez dans
form.html code> est le code de modèle Django (il contient{{form.as_p}} code>. Nous avons besoin de voir ce qu'il a généré, peut-être en utilisant l'utilisation de votre navigateur Fonctionnalité Source de la vue. Aussi, avez-vous utilisé la fonction "Inspecter élément" de votre navigateur pour examiner quels styles sont appliqués?@thebjorn j'ai ajouté la source de vue du navigateur. Et il dit que le matérialiste CSS est appliqué. Ce qui est vraiment étrange, c'est que dans l'élément d'inspection, il existe un élément de saisie de la boîte à cocher, il suffit de ne pas s'afficher sur la page elle-même pour une raison quelconque.