On me demandera peut-être d'entrer l'adresse dans le formulaire de demande ou dans le formulaire d'inscription de l'utilisateur, mais lorsque j'entre le code postal, j'ai créé un formulaire dans lequel l'adresse est automatiquement saisie, il s'agit donc d'un mémo.
Les formulaires modèles sont parfois utilisés dans les formulaires Django, mais cette fois j'ai pris la méthode de les écrire dans forms.py dans une application individuelle.
Cette fois, j'ai utilisé ajaxzip3 pour le plug-in de remplissage automatique d'adresse.
Créez forms.py du répertoire de l'application et écrivez ce qui suit.
apps/forms.py
from django import forms
class TestForm(forms.Form):
zip21 = forms.RegexField(
regex=r'^[0-9]+$',
max_length=3,
)
zip22 = forms.RegexField(
regex=r'^[0-9]+$',
max_length=4,
widget=forms.TextInput(attrs={'onKeyUp' : "AjaxZip3.zip2addr('zip21','zip22','addr21','addr21')"}),
)
addr21 = forms.CharField()
Quand je l'ai écrit pour la première fois, j'ai pensé que zip22 était une mauvaise façon d'écrire, mais cela a fonctionné.
Pour le moment, en vue, il suffit de passer le formulaire en html.
apps/views.py
from django.shortcuts import render, get_object_or_404, redirect
from forms.forms import *
def form(request):
if request.method == 'POST':
//Décrivez le traitement après réception de la requête POST
else:
form = ContactForm()
return render(request,
'test/form.html',
dict(form = form)
)
Formulaire d'appel en html.
templates/form.html
<!DOCTYPE html>
<html lang="{{ LANGUAGE_CODE|default:"en-us" }}">
<head>
<meta charset="UTF-8">
<title>form</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajaxzip3.github.io/ajaxzip3.js" charset="UTF-8"></script>
</head>
<body>
<form method="post">
{% csrf_token %}
{{ form.zip21 }}-{{ form.zip22 }}<br>
{{ form.addr21 }}<br>
<button type="submit">submit</button>
</form>
</body>
</html>
Cette fois, je regarde le fichier distant sur github, mais vous pouvez également le télécharger depuis ici, le stocker dans un dossier statique et le lire.
Si vous voulez que le code postal soit un champ
apps/forms.py
from django import forms
class TestForm(forms.Form):
zip11 = forms.RegexField(
regex=r'^[0-9]+$',
max_length=7,
widget=forms.TextInput(attrs={'onKeyUp' : "AjaxZip3.zip2addr(this,'','addr11','addr11')"}),
)
addr11 = forms.CharField()
templates/form.html
<!DOCTYPE html>
<html lang="{{ LANGUAGE_CODE|default:"en-us" }}">
<head>
<meta charset="UTF-8">
<title>form</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajaxzip3.github.io/ajaxzip3.js" charset="UTF-8"></script>
</head>
<body>
<form method="post">
{% csrf_token %}
{{ form.zip11 }}<br>
{{ form.addr11 }}<br>
<button type="submit">submit</button>
</form>
</body>
</html>
Il semble que vous devriez écrire comme ci-dessus. En dehors de cela, vous voudrez peut-être diviser uniquement les préfectures en différents champs, mais veuillez vous référer à la documentation ajazip3 et aux liens de référence pour cela.
Même lors de l'affichage des préfectures par déroulement, nous avons pu répondre comme suit
apps/forms.py
from django import forms
class TestForm(forms.Form):
zip11 = forms.RegexField(
regex=r'^[0-9]+$',
max_length=7,
widget=forms.TextInput(attrs={'onKeyUp' : "AjaxZip3.zip2addr(this,'','addr11','addr11')"}),
)
addr11 = forms.CharField()
Recommended Posts