forms.py
ns = random.sample(range(15,83), 9)
def decide_coice(count, CHOICE_dict):
CHOICEs = {
(ns[count*3], CHOICE_dict[ns[count*3]]),
(ns[count*3+1], CHOICE_dict[ns[count*3+1]]),
(ns[count*3+2], CHOICE_dict[ns[count*3+2]])
}
return CHOICEs
CHOICESAKE = {
(1,'1'),
(2,'2'),
(3,'3'),
}
CHOICE_dict = {
15:'Salattyp',
16:'Gemüsestick',
(Abkürzung)
82: 'Fruchteis',
}
CHOICE = {
(15,'Salattyp'),
(Weggelassen)
(82, 'Fruchteis'),
}
class RadioForm(forms.Form):
select = forms.ChoiceField(label='Alkohol', widget=forms.RadioSelect, choices= CHOICESAKE, initial=2)
select2 = forms.ChoiceField(label='Attribut 2', widget=forms.RadioSelect, choices= decide_coice(0, CHOICE_dict), initial=15)
select3 = forms.ChoiceField(label='Attribut 3', widget=forms.RadioSelect, choices= decide_coice(1, CHOICE_dict), initial=15)
select4 = forms.ChoiceField(label='Attribut 4', widget=forms.RadioSelect, choices= decide_coice(2,CHOICE_dict), initial=15)
Schreiben Sie den Prozess des Eingangs von Eingaben in Formulare. CHICE und CHICE_dict dienen der Vereinfachung der Verarbeitung. Es gibt immer einen Weg, mit einem gut umzugehen. Da der Flottenklassifizierungsprozess aus dem Bild noch nicht abgeschlossen wurde, wird der Flottenwert von CHOICE SAKE angegeben. Ich möchte hier die Anzahl der Sake angeben.
Eine Zufallszahl wird generiert und der dieser Zahl entsprechende Knopf wird als Quiz angezeigt.
frontend/views.py
def new(request):
params = {'message': '', 'form': None}
if request.method == 'POST':
#form = QuizForm(request.POST)
form = RadioForm(request.POST)
if form.is_valid():
"""
redirect_url = '/newview'
form = urlencode(QuizForm(request.POST))
url = f'{redirect_url}?{form}'
return redirect(url)
"""
key = (int(form.data['select']), int(form.data['select2']), int(form.data['select3']), int(form.data['select4']))
return recommend(request, key[0], key[1], key[2], key[3])
else:
params['message'] = 'Bitte erneut eingeben'
params['form'] = form
else:
params['form'] = RadioForm()
return render(request, 'frontend/new.html', params)
Er hat eine Seite für das Quiz erstellt, aber ich konnte es nicht ertragen, sie zu berühren, also habe ich ein neues Quiz erstellt.
form = RadioForm (request.POST)
und form
enthalten das Ergebnis des Quiz mit Queryset type.
Wenn der Wert beim Senden des Quiz normal ist, drücken Sie "Empfehlung zurückgeben" (Anfrage, Taste [0], Taste [1], Taste [2], Taste [3]), um zum nächsten Prozess zu gelangen.
Ich habe hier ein Problem
Ich wollte unbedingt zum ** Frontend / Empfehlen ** gehen und das Ergebnis anzeigen, wusste aber nicht, wie ich JSON-Daten weitergeben sollte.
Es scheint, dass die beiden realisiert werden können, also habe ich den zweiten gewählt. Daher erfolgt die Verarbeitung immer unter der URL _ / new_. Ich habe auch den dritten implementiert.
Alle Argumente sind int, und diese Nummer kommt zuerst heraus und entspricht der CHOICE-Nummer.
Rückgabeempfehlung (Anfrage, Schnapsnummer, Snacknummer 1, Snacknummer 2, Snacknummer 3)
Der Verarbeitungsablauf ist wie folgt
findameperson ()
get_simiralities ()
ausgewählten Reglersviews.py
quizAnser = [CHOICE_dict[one+3], CHOICE_dict[two], CHOICE_dict[three], CHOICE_dict[four]]
#Zieldaten aus Bildern und Tests
target_sake = target_items_list[one+3]
first_otsumami = {target_items_list[two] : two}
second_otsumami = {target_items_list[three] : three}
target_data = [first_otsumami, second_otsumami]
sample_lists = list(Sample.objects.all().values())
#Erhalten Sie Beispieldaten von Personen mit einer hohen Bewertung des ausgewählten Sake
samePersonList = findsamePerson(target_sake, sample_lists)
#Berechnen Sie die Ähnlichkeit
similarities = get_similarities(samePersonList, target_data)
#Rangfolge
ranking = predict(samePersonList, similarities, target_items_list, CHOICE_dict)
params = {
'title': 'title',
'massage': similarities,
'Art der Flotte':quizAnser[0],
'Snack 1':quizAnser[1],
'Snack 2':quizAnser[2],
'Snack 3':quizAnser[3],
'Erster Platz':ranking[0][0],
'quizAnser': quizAnser,
'data': ranking,
}
return render(request, 'frontend/recommend.html', context=params)
def findsamePerson(target_sake, sample_lists):#(str, list[dict])
#Extrahieren Sie Proben mit einer Ziellaugebewertung von 5
#Fügen Sie die Daten (Wörterbuchtyp) von Personen mit hoher Bewertung in dieselbePersonList ein
samePersonList = []
for item in sample_lists:
if item[target_sake] >= 3:
samePersonList.append(item)
else:
pass
return samePersonList
vies.py
params = {
'title': 'title',
'massage': similarities,
'Art der Flotte':quizAnser[0],#str
'Snack 1':quizAnser[1],#str
'Snack 2':quizAnser[2],
'Snack 3':quizAnser[3],
'Erster Platz':ranking[0][0],#str
'quizAnser': quizAnser,#Liste der Namen der Eingabeergebnisse(str)[Sake, Otsu 1, Otsu 2, Otsu 3]
'data': ranking,#Diktatliste=[{Snackname 1:Ähnlichkeitsgrad},{Snackname 2:Ähnlichkeitsgrad}...]Ähnlichkeitsgradでソート済み
}
return render(request, 'frontend/recommend.html', context=params)
Der Schlüssel (links) von params ist die Bezeichnung, die in HTML verwendet werden kann, und der Wert (rechts) ist der tatsächliche Inhalt
frontend/recommend.html
<h2>Ihr heutiger Snack ist ...</h2>
<img src="{% static 'frontend/img/result/salad.jpg' %}">
<h2>{{Erster Platz}}!!!</h2>
<br>
<p>{{Art der Flotte}}Perfekt für{{Erster Platz}}ist.<br>
<br>
Neben Salaten werden auch folgende Zutaten empfohlen.<br>
Wenn Sie nicht gut in Salaten sind oder andere Snacks essen möchten, lesen Sie bitte.</p>
</div>
{% for item, similarities in data %}
<p>
{{forloop.counter}}Rang:{{item}}【Punkt】: {{similarities}}
</p>
{% endfor %}
Sie können den Wert von Parametern mit {{key}} ausgeben und die Python-Funktion mit {%%} verwenden, sodass Sie eine Schleife ausführen.
↓ Ausgabebildschirm
Es ist eine höllische Aufgabe, manuell zu tippen. Derzeit können nur ca. 20 registriert werden Ich werde es tun, während ich einen Film schaue
Ich werde Ramen essen. Wenn es irgendwelche seltsamen Dinge oder Verbesserungen gibt, fragen Sie bitte nach! Ich habe morgen zeit!
Umleiten mit Django und JavaScript (JS) JSON mit Django senden und empfangen Json on Django [Django] Optionsfelder installieren und Markups formatieren Weiterleitung durch Übergabe von Parametern (https://djangobrothers.com/blogs/django_redirect_with_parameters/) DB im Modell löschen (ModelChoiceField) Zeigen Sie auf dem Registrierungsbildschirm (Django) ein Optionsfeld an, das auf ein anderes Modell verweist. Ich verstehe die Logik des Bildschirmübergangs nicht how to convert Querydict to python dict Grundlagen des Formulars Ein Formular aus einem Modell erstellen
Recommended Posts